关于XW指令含义

发布时间 2023-09-11 19:43:02作者: ZaiLi

XW:自扩展字节和半字操作的 16 位压缩指令

标准压缩指令不支持字节和半字操作,我们增加了字节和半字操作,当使用MounRiver开发时勾选RVXW选项,有利于提升代码密度。

为进一步提高代码密度,扩展 XW 子集,增加以下压缩指令 c.lbu/c.lhu/c.sb/c.sh/c.lbusp/
c.lhusp/c.sbsp/c.shsp,使用时需要基于 MRS 编译器或者其提供的工具链。

该组指令进行存储器读或者写操作,访问存储器的地址均由操作数寄存器rs1中的值与12位的立即数(进行符号位扩展)相加所得。

c.lbu:无符号字节加载指令

指令用法为:lbu rd, offset[11:0](rs1)

指令作用为:lbu指令从存储器中读回一个8位的数据,进行高位补0扩展后写回寄存器rd中。

c.lhu:无符号半字加载指令

指令用法为:lhu rd, offset[11:0](rs1)

指令作用为:lhu指令从存储器中读回一个16位的数据,进行高位补0扩展后写回寄存器rd中。

c.sb: 字节存储指令

指令用法为:sb rs2, offset[11:0](rs1)

指令作用为:sb指令将操作数寄存器rs2中的低8位数据,写回存储器中。

c.sh: 半字存储指令

指令用法为:sh rs2, offset[11:0](rs1)

指令作用为:sh指令将操作数寄存器rs2中的低16位数据,写回存储器中。

 

以上介绍为前4个指令的介绍,后4个指令与该四个指令意思一样,主要用于压栈的时候,后四个反汇编名字会和前四个一样,但是机器码不一样,反汇编不一定显示前面的  c.