Инструкция RISC-V ADDI - PullRequest
       7

Инструкция RISC-V ADDI

0 голосов
/ 04 июня 2018

В настоящее время я работаю над реализацией базового набора инструкций RV32I.

У меня возник вопрос по поводу инструкции ADDI.В руководстве, как понять этот пункт «ADDI rd, rs1, 0 используется для реализации псевдоинструкции MV rd, rs1 на ассемблере».

Означает ли это, что ADDI rd, rs1, 0 равно moveсодержимое rs1 для регистрации, указанное в rd?

Ответы [ 2 ]

0 голосов
/ 12 августа 2018

Да, ADDI rd, rs1, 0 - это кодировка инструкции MV rd, rs1.

Возможно много кодировок, например, XORI rd, rs1, 0 будет иметь тот же эффект.

Причиной разделения, которое является выбранной кодировкой, является дизассемблер с выводом MV rd, rs1, когда он видит ADDI rd, rs1, 0, но XORI rd, rs1, 0 все равно будет разбираться как XORI rd, rs1, 0.

В других инструкциях указаны кодировкитипа NOP, являющегося ADDI x0, x0, 0, а не любой другой инструкции, которая ничего не делает.Примечание: регистр 0 равен magic .Он всегда читается как ноль, поэтому записи теряются.

MV инструкции устанавливают значение одного регистра равным значению другого регистра, поэтому их лучше описать как «копия», как писал @LiHenyuan.

0 голосов
/ 07 июня 2018

да ADDI rd, rs1, 0 выполняет операцию:

rd <- rs1 + 0, то есть rd <- rs1

, поэтому ADDI rd, rs1, 0 выполняет MV rd, rs1

Не выполняетперемещение (лучше копировать слово) содержимого rs1 в регистр, указанный rd, как упомянуто в вопросе.Он выполняет перемещение (повторное копирование) содержимого rs1 в регистр rd.

Например:

ADDI x3, x5, 0 скопирует содержимое x5 в x3 -и используя то же имя, что и выше, в этом примере: rd равно x3 и rs1 равно x5.

...