目录
一、指令格式
二、扩展操作码
三、指令寻址
四、数据寻址
五、x86汇编指令
六、RISC-V架构
七、RV32I指令集
一、指令格式
根据地址码格式分类
根据操作类型进行分类
二、扩展操作码
三、指令寻址
指令寻址:下一条预执行指令的地址(始终有程序计数器PC给出)
顺序寻址方式:PC + "1" -> PC,此处的 “1” 代表一个指令字长
跳跃寻址方式:当程序顺序执行遇到转移指令时,PC就不再是+“1”,而是由本条转移指令的地址码字段给出的跳跃地址,或者由指令的地址码字段经过相对寻址方式计算得出跳跃后的新指令地址,按该地址去取下一条指令。
四、数据寻址
数据寻址:确定本条指令的地址码指明的真实地址
立即寻址
直接寻址
缺点:A的位数限制了该指令操作数的寻址范围,操作数的地址不易修改。
间接寻址
寄存器寻址
寄存器间接寻址
隐含寻址
基址寻址
优点:便于程序“浮动”,方便实现多道程序并发运行。
基址寄存器存放了程序的起始位置,由os管理,其内容无法被程序员修改。
变址寻址
基址变址寻址
在指令中指定一个基址寄存器和一个变址寄存器,指令中的地址码给出位移量。有效地址由基址寄存器、变址寄存器中的值和位移量三者相加而成。
相对寻址
堆栈寻址
数据寻址方式总结:
五、x86汇编指令
x86CPU的寄存器
算术运算指令
逻辑运算指令
转移指令
循环控制指令
函数调用指令
六、RISC-V架构
CISC与RISC对比
RISC-V指令集概述
RV32I通用寄存器堆
RV32I指令格式
立即数生成规则
七、RV32I指令集
10条R型运算指令:Register
- 功能:对寄存器数据进行算术逻辑运算,运算结果写入目的寄存器
9条I型运算指令:Immediate
- 功能:对寄存器与扩展后立即数进行算术逻辑运算,将结果写入目的寄存器
2条U型数据处理指令:大立即数指令
- lui:load upper immediate
- auipc:add upper immediate to pc
5条I型装数指令:Load from Memory
- lb:load byte
- lh:load half word
- lw:load word
- lbu:load byte unsigned
- lhu:load half word unsigned
- 功能:从存储器读出数据装入寄存器
3条S型存数指令:Store to Memory
- sb:store byte
- sh:store half word
- sw:store word
- 功能:将寄存器数据写入cunchuq
2条J型/I型跳转并链接指令
- jal:jump and link
- jalr:jump and link-rs1
6条B型条件分支指令:转移控制
- beq:branch if equal
- bne:branch if not equal
- blt:branch if less then
- bge:branch if great or equal
- bltu:branch if less then-unsigned
- bgeu:branch if great or equal-unsigned
2条存储器屏障指令
6条系统指令
2条断点指令