2014-10-10 2 views
1

Я сейчас изучаю компьютерную организацию и архитектуру. Нам дали некоторые упражнения. Один из них - преобразовать код сборки в машинные команды.Преобразование сборки в машинный код

Я застрял в преобразовании movia в инструкцию по эксплуатации.

Я знаю, что он состоит из двух операций, orhi и addi.

Это код в сборке:

movia r8, 50000 

Осуществление гласит, что r0 является 0x0 и r8 является 0x8.

Таким образом, orhi будет: orhi r8, r0, %hiadj(50000) и оных бы: addi r8, r8,%lo(50000)

Я получил orhi к:

00000 01000 1100001101010000 110100  
___________________r0____r8_______50000________0x34(opcode) 

Но я должен использовать %hiadj на 50000! Я не знаю, как это сделать? Я немного искал его, но не нашел ответа достаточно ясным.

Я новичок в этом, но очень хочу понять! Итак, как вы используете %hiadj? Извините, если вопрос не ясен, но если вы хотите помочь, я попробую и объясню больше.

ответ

1

%hiadj - это 16 наиболее значимых бит его операнда с регулировкой, если 16 младших значащих бит будут расширены знаками movia. В случае 50000, 16 наиболее значимых битов - 0, и нет расширения знака.

Таким образом, %hiadj(50000) будет просто 0.

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