LINUX.ORG.RU

[Assembler] AT&T синтаксис

 


0

0

Всем привет. Есть простенькая лаба на C++ и вставкой на ассемблере - http://pastebin.mozilla-russia.org/103568
Условие R = (A * X^4 + B * X^3 + C * X^2 + D * X) div E
Как мне сказали, программа нормально собирается и работает в VS

Решил переписать эту программу на AT&T синтаксис - http://pastebin.mozilla-russia.org/103569.
Но пока как-то не очень, при сборкe в Geany идут ошибки:

(.text+0x133): undefined reference to `x'
(.text+0x13b): undefined reference to `d'
(.text+0x141): undefined reference to `d'
(.text+0x147): undefined reference to `x'
(.text+0x14e): undefined reference to `x'
(.text+0x156): undefined reference to `c'
(.text+0x15c): undefined reference to `c'
(.text+0x162): undefined reference to `x'
(.text+0x169): undefined reference to `x'
(.text+0x170): undefined reference to `x'
(.text+0x178): undefined reference to `b'
(.text+0x17e): undefined reference to `b'
(.text+0x184): undefined reference to `x'
(.text+0x18b): undefined reference to `x'
(.text+0x192): undefined reference to `x'
(.text+0x199): undefined reference to `x'
(.text+0x1a1): undefined reference to `a'
(.text+0x1a7): undefined reference to `a'
(.text+0x1ad): undefined reference to `a'
(.text+0x1b4): undefined reference to `b'
(.text+0x1bb): undefined reference to `c'
(.text+0x1c2): undefined reference to `d'
(.text+0x1c9): undefined reference to `e'
(.text+0x1cf): undefined reference to `r'

В C++ и тем более ассемблере практически не разбираюсь, что нужно исправить в коде, чтобы программа собралась без ошибок?


Прозреваю, что в джини обычный С++ компилятор, а для вставок ассемблера нужны особые ключи.

ShTH
()

Эти вставки генерируют код который можно увидеть если поставить gcc флаг -S. Посмотри выхлоп и поймешь, в чем дело.


Для доступа к переменным и вообще каким-то значениям из си надо либо ручками из регистров/со стека/по известному адресу их вытаскивать, либо пользоваться extended синтаксисом. А как им пользоваться, и много других полезных вещей, находится в гугле(а тебя там забанили, я так понимаю?) по «gcc inline assembler» по первым же ссылкам.

Love5an
()
(.text+0x199): undefined reference to `x'
(.text+0x1c9): undefined reference to `e'
(.text+0x1cf): undefined reference to `r'

По-моему, тебя конкретно послали.

Miguel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.