0
雖然拆卸簡單的C代碼與GCC我碰到:在「mov(%eax),eax」中移動一個寄存器到自己的目的是什麼?
mov (%eax), eax
我組裝的理解是,當你有()
周圍的寄存器,要添加一些數量的內存地址,即0x4(%eax)
將意味着4字節高於寄存器%eax
。
但是,在這裏,()
之前沒有編號,所以它似乎是將寄存器中的值複製到自身。
我注意到%eax
寄存器通常用於返回變量,並且這行在函數調用後立即出現,所以我的猜測是這條指令實際上是告訴機器在%eax
寄存器中爲稱爲函數(即返回值)並將其放入%eax
寄存器中以獲取當前函數。
這是正確的嗎?如果沒有,我有什麼錯誤,它究竟在做什麼?
我建議在AT&T語法上使用Intel語法。閱讀IMO要容易得多。 –
這應該是'mov(%eax),%eax'。這只是將地址爲'EAX'的長字複製到'EAX'寄存器中。 – TonyK
@Jonathon:這真的取決於你所提出的。 – TonyK