2016-03-30 11 views
1

Я смотрю следующую инструкцию, и я не могу ее понять. Я попытался прочитать пару онлайн-ссылок на PowerPC, но они мне не очень понятны.Что на самом деле происходит в lwz?

lwz  r4, [email protected](r28) 

Вот как DWORD показывает в IDA

dword_91C0DB28: .long 0  

Что именно происходит, когда называется LWZ и почему это полезно?

+0

'lwz' загружает слово по указанному адресу памяти и нулями верхние 32 бита. Что непонятно? –

+0

@SamiKuhmonen Какова цель 'r28' в этом случае, если адрес, который мы хотим загрузить, -' dword_91C0DB28'? – 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

 Смежные вопросы

  • Нет связанных вопросов^_^