前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RISC-V指令集讲解(2)I-Type整数寄存器-立即数指令

RISC-V指令集讲解(2)I-Type整数寄存器-立即数指令

原创
作者头像
IC知识库
修改2021-07-30 16:56:57
1.9K1
修改2021-07-30 16:56:57
举报
文章被收录于专栏:IC知识库平台IC知识库平台

1. I-type整数寄存器-立即数指令

上文RISC-V指令集讲解 (1) 通用寄存器和汇编指令分类介绍了通用寄存器,程序计数器和6种汇编指令,本文将先从I-type的整数寄存器指令开始,详细介绍每一种汇编指令包括的具体指令。

图1 6种基本指令的机器码格式 [1]

除了CSR指令之外,所有出现的立即数都是有符号位扩展的,并且通常是在指令中最左边的可用位上 [1]。如图1所示,

所有出现立即数的指令种类(I-type,S-type,B-type,U-type和J-type),立即数的符号扩展都取决于指令的bit 31(也是立即数的最高位,比如J-type的imm[20])。

所以I-type中提到的立即数都是有符号位扩展的。

这里举例解释一下带符号位扩展,比如有一个12位立即数,

如果最高位是0,则表示立即数是正数,

如果最高位为1,表示立即数是负数。正数带符号扩展时高20位全部填充上0,负数带符号扩展时高20位全部填充上1,之后再进行相加或比较。而无符号扩展时,高20位都是填充0。

绝大多数整数计算指令对保存在整数寄存器中的XLEN位进行操作(RV32I里对应的整数寄存器为32位)。整数计算指令要么使用I-type指令为寄存器-立即数操作,要么使用R-type指令为寄存器-寄存器操作。

I-type对应的opcode被命名为OP-IMM,

I-type对应的immediate,固定为12位,被命名为I-immediate,如图2所示。

图2 整数寄存器-立即数指令机器码格式  [2]

I-type总共有15条指令,这里先介绍前6条指令,包括以下

ADDI、SLTI、SLTIU、ANDI、ORI、XORI

1.1. ADDI :ADDI指令格式为ADDI rd,rs1,immediate。x[rd] = x[rs1] + sext(imm)

1.2. SLT:SLTI指令格式为SLTI rd,rs1,immediate。x[rd] = x[rs1] < sext(immediate)

1.3. SLTIU :SLTIU指令格式为SLTIU rd,rs1,immediate。x[rd]= x[rs1] < sext(immediate)

1.4. ANDI :ANDI指令格式为ANDI rd,rs1,immediate。x[rd] = x[rs1] & sext(immediate)

1.5. ORI :ORI指令格式为ORI rd,rs1,immediate。x[rd] = x[rs1] | sext(immediate)

1.6. XORI :XORI指令格式为XORI rd,rs1,immediate。x[rd] = x[rs1] ^ sext(immediate)

备注:6种指令实例介绍完整内容请搜索引擎搜索“IC知识库”查看。

知识库更多内容请关注:http://www.icfedu.cn/?_tg=bz

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 备注:6种指令实例介绍完整内容请搜索引擎搜索“IC知识库”查看。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档