MIPS 32位立即数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MIPS 32位立即数相关的知识,希望对你有一定的参考价值。
一般用lui和ori来讲32位立即数读到寄存器里,为什么不能用addi来代替ori?
参考技术A 这个问题有点难想到,因为addi的立即数是有符号数,如果原数的第16位为1,那么在addi中将会变成负数,最终结果就不对。但是如果你想用addi也是可以的,只要在取高16位的时候再加上第16位的数就行了。
如果原数第16位是0,那么直接addi没事
比如你说的0x1025A152,用addi就错了,因为A是1010.
不过可以在取"1025"的时候加上原数的第16位,也就是1,这样在addi的时候减去A152就正好
加了2^16,再减去A152(要变成补码)
因为+2^16 - (2^16 - (A152原码的绝对值)) = A152原码的绝对值
所以正确了。
计算机原理 5.5 MIPS指令概述
1、MIPS指令概述
MIPS((Microprocessor without Intellocked Pipleline Stages)
MIPS属于精简指令集计算机RISC
MIPS指令集有以下特点:
简单的Load/Store结构
易于流水线CPU设计
易于 编译器开发
MIPS指令的寻址方式非常简单,每条指令的操作也非常简单。
2、MIPS指令格式概述
只有三种指令格式:
3、MIPS寄存器
4、MIPS寻址方式
在MIPS32指令集中,不单设寻址方式说明字段
R型指令:由op和func字段共同隐含说明当前的寻址方式
I型和J型指令:由op字段隐含说明当前指令使用的寻址方式
立即数寻址:
在指令编码格式中,源在左边,目的在右边
而在汇编格式中,源在右边,目的在左边
寄存器直接寻址
基址寻址
相对寻址
伪直接寻址(页面寻址)
以上是关于MIPS 32位立即数的主要内容,如果未能解决你的问题,请参考以下文章
RV32G下lui/auipc和addi结合加载立即数时的补值问题
RV32G下lui/auipc和addi结合加载立即数时的补值问题