2016-03-30 92 views
1

我正在看下面的說明,我似乎無法理解它。我試着閱讀一些在線的PowerPC指令參考,但他們對我來說不是很理解。lwz實際發生了什麼?

lwz  r4, [email protected](r28) 

這裏DWORD如何顯示IDA

dword_91C0DB28: .long 0  

究竟是怎麼回事時,LWZ叫什麼,爲什麼是它有用嗎?

+0

'lwz'在給定的內存地址加載一個字,並將高32位加零。有什麼不清楚的呢? –

+0

@SamiKuhmonen如果我們要加載的地址是「dword_91C0DB28」,那麼在這個例子中'r28'的目的是什麼? – Aidan

+1

_「我們要加載的地址是dword_91C0DB28」_。不是。 'dword_91C0DB28'就是位移,而基地址是在'r28'中給出的。有效地址是base_address + sign_extend(位移)。在這種情況下'r28'可能包含'dword_91C0DB28'所在部分的開始地址。 – Michael

回答

3

lwz從定義的存儲器地址加載一個字到目標寄存器,零高32位。在這種情況下,目標是r4,內存地址是dword_91X0DB28 + r28

+0

我現在明白了,'@ l'和'@ h'之後加載了雙字的低位和高位。 – Aidan