存储器地址是否与ATT汇编语言中的整数类型不同?

时间:2018-10-25 21:25:18

标签: assembly att

我知道ATT汇编语言具有整数类型(字,双字,四字)和浮点类型(单精度,双精度)。

内存地址是整数类型还是它自己的类型?

我看到直接用一个前缀$指定一个整数常量时指定了一个内存地址。那是因为整数和内存地址具有不同的类型吗?

1 个答案:

答案 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加载。