В синтаксисе AT & T разные операнды обозначаются разными синтаксисами:
%eax register operand
(%eax) indirect operand
foo direct operand
$foo immediate operand
foo(%eax) indexed operand
foo(%eax,%ebx,4) scale, index, base operand
Таким образом, разница между foo
и $foo
заключается в том, что первый относится к памяти по адресу foo
, тогда какпоследний относится к адресу foo
.Например, разница между
mov 0x1234, %eax
и
mov $0x1234, %eax
заключается в том, что первый загружает значение по адресу 0x1234
в %eax
, а второй загружает значение 0x1234
.