2016-03-30 6 views
1

Je regarde l'instruction suivante et je n'arrive pas à la comprendre. J'ai essayé de lire quelques références d'instructions PowerPC en ligne mais elles ne me sont pas très compréhensibles.Que se passe-t-il réellement dans lwz?

lwz  r4, [email protected](r28) 

Voici comment le dword montre l'IDA

dword_91C0DB28: .long 0  

Qu'est-ce qui se passe exactement quand LWZ est appelé et pourquoi est-il utile?

+0

'lwz' charge un mot à l'adresse mémoire donnée et zéros les 32 bits supérieurs. Qu'est-ce qui n'est pas clair à ce sujet? –

+0

@SamiKuhmonen Quel est le but de 'r28' dans ce cas si l'adresse que nous voulons charger est' dword_91C0DB28'? – Aidan

+1

_ "l'adresse que nous voulons charger est dword_91C0DB28" _. Ce n'est pas. 'dword_91C0DB28' est juste le déplacement, tandis que l'adresse de base est donnée dans' r28'. L'adresse effective est base_address + sign_extend (displacement). 'r28' pourrait dans ce cas contenir l'adresse du début de la section où se trouve' dword_91C0DB28'. – Michael

Répondre

3

lwz charge un mot dans le registre cible à partir de l'adresse de mémoire définie et zéros les 32 bits supérieurs. Dans ce cas, la cible est r4 et l'adresse de la mémoire est dword_91X0DB28 + r28.

+0

Je le comprends maintenant, les '@ l' et' @ h' après quoi charge les bits inférieurs et supérieurs de notre dword. – Aidan