risc-v neg指令是如何实现的?

How is risc-v neg instruction imeplemented?

neg伪指令是如何只用一个sub实现的?

我不明白,因为 negR[rd] = -R[rs1]。但是如果我有sub,那就是R[rs1] - something

本例中的“某物”是 zero 寄存器。但你不是从寄存器中减去它,而是从 that.

中减去寄存器

那个:

neg rd, rs

pseudo-instruction的意思是把rs的否定放到rd中。

sub rd, zero, rs

指令从zero中减去rs,将结果放入rd

rd := -rs        ; example: -(42)  -> -42
rd := 0 - rs     ;          0 - 42 -> -42

由于-x0 - x相同,所以它们是等价的。


如果您想要更全面的伪指令列表以及它们映射到的内容,这里有一张图片,其中详细介绍了一些内容,包括您询问的具体指令: