开发者学堂课程【高校精品课-大连理工大学-计算机组织与结构:E906的指令】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/3/detail/16052
E906的指令
内容介绍
一、E906的指令系统
二、RV32IMAFDCP 指令集
三、平头哥扩展指令集
四、RV32I 整型指令集
一、E906的指令系统
E906采用了16/32位混编的 RV32IMAC 指令集,在此基础上扩展了平头哥自定义指令,形成RV32IMAFDCP指令集
- l :整数指令
- M :乘除法指令
- A :原子操作指令
- F :单精度浮点指令
- D :双精度浮点指令
- C :压缩指令
- P : DSP 指令
采用的是16位和32位混编的 RV321MAC 指令集,也就是支持整形乘除法原子运算以及压缩指令集,在此基础上又扩展了平头哥自定义的指令集,形成了 RV32MAFDCP 指令集。各个字母的含义如下所示,l整形指令,M乘除法指令,A原子操作指令,F单精度浮点指令,D 双精度浮点指令,C 压缩指令,P 是 DSP 指令。
二、RV32IMAFDCP 指令集
口加减法指令
口逻辑操作指令
口移位指令
ロ比较指令
口数据传输指令
ロ分支跳转指令
口内存存取指令
口控制寄存器操作指令
口低功耗指令
口异常返回指令
口特殊功能指令
指令集中包括指令有加减法、逻辑操作、移位、比较、数据传输、分支跳转、内存存取控制寄存器的操作、低功耗指令、异常返回指令和一些特殊功能的指令。
三、平头哥扩展指令集
口Cache 操作指令
口同步指令
口扩展算术运算指令
口位操作指令
口访存指令
口双精度浮点高位数据传输指令
口中断加速指令
平头哥给它扩展了一些指令,包括 Cache 操作指令、同步指令、扩展算术运算指令、位操作访存指令,还有双精度浮点高位数据传输指令以及中断加速指令,这是它的指令系统的全貌。
四、RV32I 整型指令集
口加减法指令
ADD 有符号加法指令
ADDI 有符号立即数加法指令
SUB 有符号减法指令
第一类是加减法指令,包括 ADD 有符号加法,ADD 后面加个 I 就是有符号立即数加法指令,带I的就有一个立即数的运算,减法就是 SUB 有符号减法指令,逻辑操作呢就是典型的与操作或操作和异或操作。
口移位指令
-SLL 逻辑左移指令
-SLLI 立即数逻辑左移指令
-SRL 逻辑右移指令
-SRLI 立即数逻辑右移指令
-SRA 算术右移指令
-SRAI立即数算术右移指令
移位指令包括逻辑左移、立即数逻辑左移、逻辑右移、立即数逻辑右移、算术右移和立即数的算术右移。一般的处理器里面算术左移和逻辑左移的功能是一样的,所以没有涉及这条指令。
口比较指令
-SLT 有符号比较小于置位指令
-SLTU 无符号比较小于置位指令
-SLTI 有符号立即数比较小于置位指令
-SLTIU 无符号立即数比较小于置位指令
口数据传输指令
-LUI 高位立即数装载指令
AUIPC PC 高位立即数加法指令
有符号比较小于置位指令、无符号比较小于置位指令,有符号数无符号整数的立即数比较小于置位指令。
口分支跳转指令
-BEQ 相等分支指令
-BNE 不等分支指令
-BLT 有符号小于分支指令
-BGE 有符号大于等于分支指令
-BLTU 无符号小于分支指令
-BGEU 无符号大于等于分支指令
-JAL 直接跳转子程序指令
-JALR 寄存器跳转子程序指令
口内存存取指令
-LB 有符号扩展字节加载指令
-LBU 无符号扩展字节加载指令
-LH 有符号扩展半字加载指令
-LHU 无符号扩展半字加载指令
-LW 有符号扩展字加载指令
-SB 字节存储指令
-SH 半字存储指令
-SW 字存储指令
口低功耗指令
-WFI 进入低功耗模式指令
口异常返回指令
-MRET 机器模式异常返回指令
口特殊功能指令
-FENCE 存储同步指令不可预期
-FENCE .1指令流同步指令阻塞执行
-ECALL 环境异常调用指令
-EBREAK 断点指令
口 RV32M 乘除法指令如下
-MUL 有符号乘法指令
-MULH 有符号乘法取高位指令
-MULHSU 有符号与无符号乘法取高位指令
-MULHU 无符号乘法取高位指令
-DIV 有符号除法指令
-DIVU 无符号除法指令
-REM 有符号取余指令
-REMU 无符号取余指令
一个处理器支持乘除法的就意味着它内部有硬件的乘法器除法器,MUL 是乘法指令,DIV 是除法指令,取余数指令和除法是一回事,只不过一个要商一个要余数,还有原子操作的指令,还有压缩指令。