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