上述代码中 ori_ins 与 or_ins 函数,分别执行了 ori 和 or 指令。 ori 指令是拿 a0 寄存器和立即数 0 进行或操作,由于立即数是 0,所以总是返回 a0 原本的数据;or 指令是拿 a0 和 a1 寄存器进行或操作,再把结果写入到 a0 寄存器。 VSCode 里,按下“F5”调试一下,如下所示: 上图中是执行完 ori a0...
or/ori:寄存器与寄存器/立即数按位或 xor/xori:寄存器与寄存器/立即数按位异或 not:按位取反 具体格式为: {and | or | xor}{i} rd, rs1, {rs2 | imm} not rd, rs //对rs寄存器按位取反,结果写入rd寄存器中 算术指令 算术指令分为:add和sub,具体格式为: {add | addi | sub}{w} rd, rs1,...
RV32I 具有 6 条逻辑操作指令,分别是XORI、ORI、ANDI、XOR、OR 和 AND,其指令格式如下图所示: 逻辑操作指令也是使用 R-typed 和 I-typed 指令格式,R-typed 为 xor、or 和 and, I-typed 为 xori、ori 和 andi。 xori是立即数异或,rs1 和立即数按位异或并写入 rd中; ori是 rs1 和立即数按位取或并...
AND.asBits } is(OR, ORI){ alu_ctrl := AluCtrlEnum.OR.asBits } is(LUI){ alu_ctrl := AluCtrlEnum.LUI.asBits } is(AUIPC){ alu_ctrl := AluCtrlEnum.AUIPC.asBits } is(JAL(false)){ alu_ctrl := AluCtrlEnum.JAL.asBits } is(JALR){ alu_ctrl := AluCtrlEnum.JALR.asBits } is...
6. XORI指令,与XOR指令类似,但是其中一个操作数是一个立即数,而不是一个寄存器中的值。 7. SLL指令,用于执行逻辑左移操作,将操作数的位向左移动指定的位数,并将结果存储在目标寄存器中。 8. SRL指令,用于执行逻辑右移操作,将操作数的位向右移动指定的位数,并将结果存储在目标寄存器中。 9. SRA指令,用于执...
一、ORI指令 二、状态机与流水线 三、五级流水线模型 四、流水线验证 五、处理数据相关问题 六、MIPS编译环境建立——GNU工具链 一、ORI指令 31~26为ORI指令的指令码 25~21为源寄存器(取出源操作数)——MIPS有32个寄存器,所以5位即可全部表示 20~16为目的寄存器(保存运算结果) 15~0为立即数 ORI指令:...
ori rd, rs1, imm 1. ani:立即数做符号扩展,与源寄存器相与,将结果存入目标寄存器; 汇编写法: ani rd, rs1, imm 1. slli:将源寄存器1值左移shamt位,空位填0,结果写入目标寄存器;shamt[5]为0有效; 汇编写法: slli rd, rs1, shamt 1. srli :将源寄存器1值右移shamt位,空位填0,结果写入目标寄存器;...
ori rd,rs1,imm:将rs1寄存器中的值与有符号立即数imm进行按位或操作,结果存入rd寄存器。 xori rd,rs1,imm:将rs1寄存器中的值与有符号立即数imm进行按位异或操作,结果存入rd寄存器。 内存访问指令 lw rd,offset(rs1):从rs1寄存器的值加上偏移量offset所指向的内存地址加载一个32位字到rd寄存器。 sw rs2...
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知识库”查看。
首先根据指令命名方式判断左侧的含义,从上到下依次为,立即数与源寄存器相加addi、寄存器小于立即数slti、寄存器小于立即数无符号版本sltiu、立即数与源寄存器异或xori、立即数与源寄存器按位或ori、立即数与源寄存器按位与andi、寄存器根据立即数逻辑右移slli、寄存器根据立即数逻辑右移srli、寄存器根据立即数算术右移srai...