我知道ATT汇编语言具有整数类型(字,双字,四字)和浮点类型(单精度,双精度)。
内存地址是整数类型还是它自己的类型?
我看到直接用一个前缀$
指定一个整数常量时指定了一个内存地址。那是因为整数和内存地址具有不同的类型吗?
答案 0 :(得分:2)
在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
加载。