最近一个案子刚刚接近尾声,現在想对这个案子做个总结从哪里开始呢?想想这个系统所用的CPU是MIPS32架构的还是先从MIPSMips指令格式R说起吧!
CPUMips指令格式R长度为32比特,按功能可以分为以下五类:加载和存储Mips指令格式R算术Mips指令格式R,跳转和分支Mips指令格式R杂类Mips指令格式R和协处理器Mips指令格式R。下面开始对MIPS常见的汇编Mips指令格式R进行讲解
MIPS加载和存储Mips指令格式R的命名规则如下:
--(待续:由于时间关系先就写到这里,晚上接着写)
点击文档标签更多精品内容等伱发现~
VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。
VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。
VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。
付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。
共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档
MIPSMips指令格式R集属于精简Mips指令格式R集
MIPS的所有Mips指令格式R都是32位Mips指令格式R格式简单,而X86的Mips指令格式R长度不是固定的
简单的Mips指令格式R和格式易于译码和流水线操作,泹是代码密度不高导致二进制文件大
MIPS有32个通用寄存器REG,为什么是32个而不是更多呢
因为更多的寄存器需要更多的Mips指令格式R空间对寄存器編码,也会增加上下文切换的负担
寄存器-寄存器ALU操作
加载/存储字节,半字字,双字
条件分支跳转,跳转并链接寄存器
op:Mips指令格式R基本操作称为操作码。
rs:第一个源操作数寄存器
rt:第二个源操作数寄存器。
rd:存放操作结果的目的操作数
funct:函数,这个字段选择op操莋的某个特定变体
表示$t0=$s0+$s1
,即16号寄存器(s0)的内容和17号寄存器(s1)的内容相加,结果放到8号寄存器(t0)
Mips指令格式R各字段的十进制表示为:
17=$s1表示第二个源操作数(rt)在17号寄存器里,
8=$t0表示目的操作数(rd)在8号寄存器里
把各字段写成二进制,为:
这就是上述Mips指令格式R的机器码(machine code),可以看出是很有规则性的
MIPS没有栈操作Mips指令格式R ,调用子程序时没有自动压栈的callMips指令格式R只能用jal。
MIPS的内存映射、中断等功能都做到了协处理器0(cp0)中浮点运算做到了协处理器1(cp1)中。
MIPS的寻址方式最简单仅有寄存器加偏移寻址方式。
1($at): 用做汇编器的暂时变量
8-15($t0-$t7): 暂時变量子函数使用时不需要保存与恢复
16-23($s0-$s7): 子函数寄存器变量。子函数必须保存和恢复使用过的变量在函数返回之前从而调用函数知道這些寄存器的值没有变化。
24-25($t8-$t9): 暂时变量子函数使用时不需要保存与恢复
26-27($k0-$k1): 通常被中断或异常处理程序使用作为保存一些系统参数
28($gp): 全局指针。一些运行系统维护这个指针来更方便的存取“static“和”extern”变量
30($s8/$fp): 第9个寄存器变量。子函数可以用来做桢指针
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。