2012-10-19 128 views
4

如果我的命令行的人说:大会(,%EAX,4)

jmp *0x804a180(,%eax,4) 

是什么意思呢?我特别要问,因为在第一个逗号之前没有任何价值,我不确定地址的含义。

+2

没有冒犯,但问这是什么意思是不可扩展的。我知道AT&T的语法很愚蠢和令人困惑,但它也在几个网站上有明确的记录。 – harold

回答

8

该指令跳转到其值位于计算为%eax * 4 + 0x804a180的地址处的位置。

*用于AT & T语法以指示间接跳转和调用。它基本上意味着“跳转到由此指向的位置,而不是此值”。它区分以下说明是有用的:

jmp myAddress # Jumps to the location myAddress 
jmp *myPointer # Jumps to the location contained at myPointer 

对于空值,它将被视为0的AT &Ť寻址offset(%base, %index, multiplier)完整的形式,但任何这些值可被排除在外。除了乘法器(默认为1)之外,每个函数的默认值都是0.大多数情况下,您可以忽略它们,但是如果您有索引而没有基准,则需要逗号,以便汇编程序可以知道哪个它是。

+0

非常感谢你! – arc

相关问题