ASM - Для чего используется «%»? - PullRequest
3 голосов
/ 11 февраля 2012

Какая польза от «%» в сборке? Например, иногда инструкция записывается как:

movl% eax,% ebx

и в других случаях записывается как:

movl eax, ebx

(без символа процента) в чем разница?

Ответы [ 2 ]

6 голосов
/ 11 февраля 2012

Для всех ассемблеров существует проблема, когда вам нужно обратиться к символу, имя которого совпадает с именем регистра. Например, если у вас есть некоторый C-код, в котором есть функция «int eax ()», и вы связываете его с каким-то ассемблерным кодом, который выполняет «mov ebx, eax», то ассемблер должен знать, является ли «eax» это регистр или если это функция.

Чтобы обойти это, разные сборщики делают разные вещи. Некоторые (например, NASM) предположили бы, что «eax» является регистром, и для неоднозначных символов потребуется какой-то префикс (например, «$ eax» для ссылки на символ, а не на регистр). Другие (например, GAS) делают обратное и добавляют префикс к имени регистра; иногда, даже если нет никакой двусмысленности (например, «% eax» для обозначения регистра и «eax» для обозначения символа).

5 голосов
/ 11 февраля 2012

Существует несколько разновидностей синтаксиса сборки X86 .Тот, что с% называется AT & T.Другой называется Intel.Разные ассемблеры используют разные синтаксисы.Некоторые (газ) работают с обоими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...