MIPS汇编语言编程基础知识点总结 本文总结了MIPS汇编语言编程的基础知识点,涵盖了基本步骤、C语言代码编写规范、节省代码行数的技巧与方法、矩阵取值、赋值、运算时的要点与注意事项、常用的伪指令、If-elseif-else语句模板、循环语句模板、调用函数模板和Debug技巧与方法等方面。 一、基本步骤 * 仔细分析题干,明确任务 * 书写C语言代码,用适宜于MIPS编写的思路进行书写 * 汇编程序编写:全局注释-内存空间、宏的定义-主函数与函数 * 静态查错 二、C语言代码编写规范 * 简洁 = 更少汇编代码 = 更少耗时、更少问题 * 不轻易将“顺序功能”写在函数中 * 子函数:不在途中return,易造成栈操作出现遗漏 * 条件语句:框架清晰规整,条件至简 三、节省代码行数的技巧与方法 * 根本问题:C语言参考模板的代码是否简洁? * 分支技巧:使用Branch类指令参与不等式比较分支,不适用set+beqz方式跳转 * 基础型的操作使用macro封装:push、pop(注意栈取放反向)和input * 递归函数中多次调用时首选用s寄存器存需要保存的值 * R型ALU运算指令一般为3寄存器,不要只将其当做2寄存器使用 四、矩阵取值、赋值、运算时的要点与注意事项 * 伪指令.word value:space可定义初始值不同的字宽空间 * 二维数据存放技巧:空间大小开成2^n * 2^n,在计算地址的行跳跃时,减少因为错乘“行的个数”(正确的因为列宽)而造成的错误 * SW和LW的基址寻址法:lw/sw $t0, label($t1) V.S. 寄存器寻址 lw/sw $t0, offset($t1) 五、常用的伪指令 * .eqv:更改寄存器名字以方便识别 * .macro:封装建议操作函数,但封装不佳易造成冲突篡改 六、If-elseif-else语句模板 * 每次在搭建条件语句模块时,至少应该将一种条件操作框架搭建好再填充内容 七、循环语句模板 * 每次在搭建循环语句模块时,应将头尾(包括多层循环)都搭建好再填充内容 八、调用函数模板 * 调用函数模板的编写规范和注意事项 九、Debug技巧与方法 * 静态查错:运行前静态查错-运行错误定位更细致后静态查错 * 动态查错:借助断点/错误点,定位错误的代码位置,结合寄存器、内存中的值,找到错误的地方-进行静态查错 * 相似功能复制代码后重点查错位置:标签名、循环变量赋值、数组名、循环界限… * 常见的bugs:S寄存器被误写成t寄存器、Add和and书写失误、栈维护变量时,采用push和pop时弄反了、递归调用时,中途return未进行变量复位、矩阵地址运算时,行运算应乘上列数(不是行数)、输出和输入时,缺少syscall指令造成漏入漏出。
- 粉丝: 29
- 资源: 297
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0