2012-10-19 37 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