2016-03-30 28 views
1

Ich schaue mir die folgende Anweisung an und ich kann es nicht verstehen. Ich habe versucht, ein paar Online PowerPC Anweisungen zu lesen, aber sie sind nicht sehr verständlich für mich.Was passiert eigentlich in lwz?

lwz  r4, [email protected](r28) 

Hier, wie die dword zeigt in IDA

dword_91C0DB28: .long 0  

Was genau los ist, wenn lwz genannt wird und warum ist es sinnvoll?

+0

'lwz' lädt ein Wort an die angegebene Speicheradresse und setzt die oberen 32 Bits auf Null. Was ist daran unklar? –

+0

@SamiKuhmonen Was ist der Zweck von 'r28' in diesem Fall, wenn die Adresse, die wir laden wollen,' dword_91C0DB28' ist? – Aidan

+1

_ "die Adresse, die wir laden möchten, ist dword_91C0DB28" _. Es ist nicht. 'dword_91C0DB28' ist nur die Verschiebung, während die Basisadresse in' r28' angegeben ist. Die effektive Adresse ist base_address + sign_extend (displacement). 'r28' könnte in diesem Fall die Adresse des Anfangs des Abschnitts enthalten, in dem sich' dword_91C0DB28' befindet. – Michael

Antwort

3

lwz lädt ein Wort in das Zielregister von der Speicheradresse definiert und Nullen die oberen 32 Bits. In diesem Fall ist das Ziel r4 und die Speicheradresse ist dword_91X0DB28 + r28.

+0

Ich verstehe es jetzt, die '@ l' und' @h' nach denen lädt die unteren und höheren Bits unseres dword. – Aidan