基础指令长度编码
基本RISC-V ISA的基本指令长度为32位,必须在32位边界处自然对齐。
然而,标准RISC-V编码方案意在支持扩展指令的可变长编码,每条指令长度是16位的倍数,并且指令在16位边界对齐。
压缩标准ISA扩展通过提供压缩的16位指令减少代码大小,并且放宽了对齐限制,允许16位和32位两种对齐,以此来提高代码密度。
我们是用IALIGN来指代指令对齐约束,值只能是16或32。基本ISA的IALIGN是32位,压缩扩展的ISA的IALIGN是16位。
我们使用ILEN表示一种实现支持的最大指令长度,通常总是IALIGN的倍数。
扩展指令长度编码
部分32位指令编码空间已经暂停分配给长度大于32位的指令,这个空间的全部这次都被预留,以后提议编码长度大于32位也并未被冻结。
指令的低16位定义了指令码长度。
长度大于32位的标准指令集扩展编码将额外的低阶位设置为1.
目前只有16-bit和32-bit编码被认为是冻结的。
考虑到压缩格式的代码大小和节能,我们希望在ISA编码方案中构建对压缩格式的支持,而不是作为事后的想法再添加,但是为了允许更简洁的实现,我们不强制使用压缩格式。我们还想选择性地使用更长的指令来支持实验