我在x86汇编语言中有以下行,我不知道它的作用......
cmp %eax,0x80498d4(,%ebx,4)
我知道它正在比较声明的两半,但我不知道地址在其中做了什么以及括号做了什么。非常感谢一些澄清!
答案 0 :(得分:4)
在AT& T语法中,此表单代表
OFFSET(基本寄存器,索引寄存器,索引规模)
所以表示的地址是BASE REGISTER(如果存在)+ INDEX * SCALE(如果存在)+ OFFSET的值,所以
EBX * 4 + 0x80498d4。
答案 1 :(得分:1)
这是AT& T语法:
cmp %eax,0x80498d4(,%ebx,4)
Intel语法中的等价物是:
cmp [080498D4H + EBX*4],EAX
这意味着它将地址[0x80498D4 + 4*EBX]
的DWORD内容与EAX
寄存器的内容进行比较,并将处理器标志 设置为 这两个值相互减去。之后,您可以使用这些标志来执行条件跳转。