我目前正在嘗試通過分析簡單的C代碼片段來學習彙編語言(以及不同的編譯器選項的影響)。現在我stumpled遇到下列指令:如何解釋此地址-0x80(%rbp,%rax,4)
mov %edx,-0x80(%rbp,%rax,4)
我不明白的是對目標地址-0x80(%rbp,%rax,4)
表達。 該指令爲循環中的本地數組賦值。
我目前正在嘗試通過分析簡單的C代碼片段來學習彙編語言(以及不同的編譯器選項的影響)。現在我stumpled遇到下列指令:如何解釋此地址-0x80(%rbp,%rax,4)
mov %edx,-0x80(%rbp,%rax,4)
我不明白的是對目標地址-0x80(%rbp,%rax,4)
表達。 該指令爲循環中的本地數組賦值。
機器命令會將%edx
的內容複製到%rbp + 4 * %rax - 0x80
給出的地址。看起來%rax
正在保存該數組的索引,並且%rbp - 0x80
是基地址。
看一看here以更好地瞭解AT & T語法。
-0x80(%rbp,%rax,4) = *(%rbp + %rax * 4 + (-0x80))
所以下面insruction:
mov %edx,-0x80(%rbp,%rax,4)
手段,讓CPU在地址(%rbp + %rax * 4 + (-0x80))
寄存器%EDX的價值轉移到內存中,這是AT & T型裝配。
感謝您的回答 - 只是@ Fermat2357有點早... –
@ Fermat2357,您是對的。謝謝。 –
感謝您的回答 - 鏈接真的有幫助 –