Инструкция RISC-V NOP - PullRequest
       67

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

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

Я работаю над инструкциями RISC-V 32I в последнее время.Я получил вопрос об инструкции NOP, которая, согласно спецификации, равна ADDI x0, x0, 0.

Однако x0 не является общим регистром, который может быть изменен программистом.Таким образом, почему x0 служит здесь регистром назначения для инструкции NOP?

Может кто-нибудь пролить свет на этот момент?

Ответы [ 3 ]

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

oystercatcher цитирует правильное утверждение, x0 содержит константу 0 и не может быть записано в другое значение.

Инструкция ADDI x0, x0, 0 выполняет x0 <- x0 + 0, где 0 - непосредственно закодированный в инструкции.Такая инструкция не влияет на состояние RISCV и поэтому является NOP.

Другая альтернатива для NOP для RISCV: ADDI x0, x1, 0.Даже ADD x0, x1, x2 не будет влиять на RISCV (нет флага Carry на RISCV) и поэтому ведет себя как NOP.

0 голосов
/ 03 августа 2019

NOP - это псевдоинструкция , которая расширяется до ADDI x0, x0, 0.x0 (или zero) - это регистр только для чтения , предназначенный для нулевого значения, т. Е. Он привязан к нулю для каждого отдельного бита.Все, что записывается в этот регистр, просто отбрасывается, поскольку его значение нельзя изменить.

С Руководство по набору инструкций RISC-V, том I: Непривилегированный ISA :

Инструкция NOP не изменяет никакого архитектурно видимого состояния, за исключением повышения pc и увеличения любых применимых счетчиков производительности.NOP кодируется как ADDI x0, x0, 0.

Помня о том, что в RISC-V нет арифметических флагов (т. Е. Переносов, переполнения, нуля, флагов знаков), любой арифметической операции, у которой регистр назначения is x0 будет выполнять команду без операции независимо от исходных регистров, так как общий результат будет состоять из перехода счетчика программы к следующей инструкции без изменениялюбое другое соответствующее состояние процессора.

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

https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md

или на стр. 109 из https://riscv.org/specifications/

регистр x0 жестко подключен к нулю

...