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.
标签:存储器,字节,含义,半字,rs1,指令,寄存器,XW From: https://www.cnblogs.com/liaigu/p/17694321.html