【汇编语言与计算机系统结构笔记18】MIPS指令集与汇编程序设计 & 异常处理

本文详细探讨了MIPS指令集,包括定长指令的影响、指令编码和汇编指示。重点讲解了MIPS32异常处理,如异步异常、异常处理向量、精确异常处理,以及在SPIM模拟器中的实现。同时,通过实例展示了如何处理中断和异常,强调了异常返回过程中的状态转换和寄存器管理。
摘要由CSDN通过智能技术生成

本次笔记内容:
28.MIPS指令集与汇编程序设计-2
补充:MIPS32异常处理

注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库

本节课对应幻灯片:汇编语言程式设计-MIPS.pdf,第49页起。

在B站视频中,缺了一节课,即 ‘MIPS32异常处理’ ,感谢 UP 主 东南偏南2018 做的补充:汇编语言程序设计(清华大学张悠慧)P27

我们讲 MIPS32 ,主要集中在其特色部分。

P49 定长指令造成了一些困扰


如上。某些操作数的限制(如立即数宽度)增加了汇编编程难度。为降低难度,MIPS汇编器会做一些预处理。

如上,at 寄存器保留给汇编器专用,就用在了这里。因此一般情况下不要手动使用。

对于 li $3, -5 ,其意义其实就是因为 -5 不大,因此直接用 addiu 装到 $3 中。

对于 li $4, 0x8000 正好放得下 16 位中,因此转换的方法较多,这里转换为 ori 或指令 ,是可以的。

对于 0x120000 ,把 12 拿出来,放到高 16 位对应的位置,低 16 位清零。

对于 0x12345 ,对于低 16 位不全为 0 的,转换为两条指令 luiori


在如上的例子中,对于第三条 lw $2, addr ,这个数宽度较大,至少得把这个指令拆成两条:

  • %hi 相当于汇编中的宏,取高的半字(16位);
  • %lo 则是取低的半字。

对于 sw $2, addr($3) ,在基址上加上偏移。

P51 指令编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值