как отличить машинный код jalr и beq в RISC-V

#assembly #riscv

Вопрос:

В RiSC-V, поскольку код операции и функция 3 инструкций jalr и beq являются одинаковыми, мне интересно, будет ли машина путать их или нет. Или существуют ли пределы диапазона их RS и непосредственные?

Ответ №1:

Инструкции содержат следующие функции и код операции:

 func3#  opcode#  opcode name    opcode#(hex)
 000    1100011    BEQ            63
 000    1100111    JALR           67
 

Таким образом, они отличаются значением кода операции#.


В качестве примечания вы можете использовать инструменты, чтобы увидеть различия, например, с помощью RARS, который является простым в использовании симулятором, в котором вы можете ввести следующий код сборки и просмотреть его машинный код:

     .text
    jalr zero zero 0
label:  
    beq zero zero label
 

введите описание изображения здесь

Комментарии:

1. Спасибо тебе, Эрик! Только что я подтвердил, что это ошибка печати, что код операции из инструкций SB-типа, они печатают 1100011 как 1100111. И теперь я это понимаю. И последнее, спасибо за вашу рекомендацию RARS.