2012-11-13 45 views
3

我目前正在嘗試通過分析簡單的C代碼片段來學習彙編語言(以及不同的編譯器選項的影響)。現在我stumpled遇到下列指令:如何解釋此地址-0x80(%rbp,%rax,4)

mov %edx,-0x80(%rbp,%rax,4) 

我不明白的是對目標地址-0x80(%rbp,%rax,4)表達。 該指令爲循環中的本地數組賦值。

回答

6

機器命令會將%edx的內容複製到%rbp + 4 * %rax - 0x80給出的地址。看起來%rax正在保存該數組的索引,並且%rbp - 0x80是基地址。

看一看here以更好地瞭解AT & T語法。

+0

感謝您的回答 - 鏈接真的有幫助 –

7
-0x80(%rbp,%rax,4) = *(%rbp + %rax * 4 + (-0x80)) 

所以下面insruction:

mov %edx,-0x80(%rbp,%rax,4) 

手段,讓CPU在地址(%rbp + %rax * 4 + (-0x80))寄存器%EDX的價值轉移到內存中,這是AT & T型裝配。

+0

感謝您的回答 - 只是@ Fermat2357有點早... –

+0

@ Fermat2357,您是對的。謝謝。 –