我曾经认为当使用整数作为常量时,我总是需要追加一个" $"签名,除非该号码被解释为地址,所以我有:
.data
a=$2
.equ b,3
.text
.globl _start
_start:
movl $a,%ebx
movl $b,%ecx
movl $1,%eax
int $0x80
此代码编译为:
0: bb 00 00 00 00 mov $0x0,%ebx
5: b9 03 00 00 00 mov $0x3,%ecx
a: b8 01 00 00 00 mov $0x1,%eax
f: cd 80 int $0x80
我不知道编译器如何处理a = $ 2,为什么$ 2被编译成0x0? 然后我删除了" $",
.data
a=2
.equ b,3
.text
.globl _start
_start:
movl $a,%ebx
movl $b,%ecx
movl $1,%eax
int $0x80
这一次,编译的代码是正确的:
0: bb 02 00 00 00 mov $0x2,%ebx
5: b9 03 00 00 00 mov $0x3,%ecx
a: b8 01 00 00 00 mov $0x1,%eax
f: cd 80 int $0x80
所以我的问题是,' 2'之间的区别是什么?和' $ 2'这里吗?