《微处理器器与体系结构》1.2MIPS指令编程与寻址方式

本文详细介绍了MIPS指令集中的编程概念,包括算术/逻辑指令(如逻辑运算、移位操作)、分支语句(条件分支、跳转指令)、常数赋值和乘除法。此外,还探讨了MIPS的寻址方式,如寄存器寻址、立即数寻址、基地址寻址、PC相对寻址和伪直接寻址。文章通过实例解析了MIPS指令如何实现高级语言的结构,如循环、函数调用以及数组操作。
摘要由CSDN通过智能技术生成

《微处理器体系结构》-第六章 第二讲 MIPS指令编程



前言

本课程是笔者在大三学年所学的专业选修课,以此文章来记录和总结自己学习的过程,仅供诸位参考。本课教材选用美国作家

戴维•哈里斯的《数字设计和计算机体系结构》

课程涉及范围为本书6到8章部分内容。


一、编程

不必认为汇编语言编程十分困难。相反,我们已熟知的高级语言(C或Java)所涉及的抽象层次更高。本文将讲解如何将高级语言常见的算术和逻辑操作、if/else语句、for和while循环、数组下标和函数调用等常见的软件结构转换为MIPS汇编代码。

1.算术/逻辑指令

这类指令是实现高级语言结构的基础,MIPS定义了大量这类指令。

1.1 逻辑指令

MIPS逻辑操作包括了与、或、异或、或非(and、or、xor、nor)。这些R指令对两个源寄存器和一个目的寄存器进行按位操作。图中给出实例,指令执行结果存储在目的寄存器rd中。
在这里插入图片描述

MIPS不提供NOT指令,但 A NOR 0=NOT A,使用NOR指令代替了NOT指令的功能。
逻辑运算有着一些其他功能,如and指令可以用于屏蔽某些位,如上例中的s2就被屏蔽了最低两个字节(即最右边的16位二进制数)后,写入了s3中。
or指令可以用于组合两个寄存器,如0x34A80000 OR 0x00001234 = 0x34A81234,就将两个数据的高4位和低4位组合起来了。

1.2 移位指令

MIPS移位操作可以将寄存器中的值左移或者右移最多31位。移位操作指令有:逻辑左移指令sll,逻辑右移指令srl和算术右移指令sra,这些指令可以将操作数乘或除以2的整数次幂。
在这里插入图片描述
可见,sll指令是对低位补零,srl则是对高位补零,而sra则是高位补符号位。

MIPS也提供可变以为指令,即将上述指令中的立即数换为寄存器,格式为:sllv rd,rt,rs。rt中保存待移位的值,rs则给出了位移的位数。可变逻辑指令分别是:sllv,srlv和srav。

1.3 常数赋值

我们可以使用addi指令将16位的常数赋值到寄存器内。

为什么addi只能赋值16位常数?因为I类型指令的imm只有16位

为了赋值32位常数,可以先使用一条装入高位立即数指令,将16位的立即数装入32位寄存器的高16位中,再使用ori指令将另一个16位立即数合并到该寄存器的低16位中。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liu7east

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值