阴间指令集MIPS简介:汇编,IO,过程调用与冒泡排序

前言

计系3第一个实验就是MIPS指令集写汇编。。。在计系1和2的折磨 下,我们对汇编语言有了一定的认知,但是还是难顶 。考虑到之后还有大量的实验,姑且记录一下MIPS的一些特性,操作等等,方便后续查阅。

MIPS指令集简介

MIPS的分类,也要按照基本法 ,按照寄存器的位数可以分为 MIPS-32 和 MIPS-64。其中本篇博客主要介绍 MIPS-64 指令集。

Mips指令集是一套精简指令集,所以使用起来非常 蛋疼 高效快捷。

MIPS资源

在 MIPS 指令集中,有很多资源可供我们调用,比如寄存器资源,内存资源等等。

寄存器资源

首先介绍寄存器资源。相比于 LC-3 这种只提供8个寄存器的拉跨的指令集,MIPS提供了32个寄存器,供程序员使用。

其中寄存器按照 R0 到 R31 划分。但是为了显式地区分他们的用途,我们人为地将寄存器按照用途进行划分:

名称 别名 用途 被调用之前是否需要保存
$zero R0 常数寄存器 表示0 😅
$v0 ~ $v1 R2 ~ R3 函数调用 – 返回值 ×
$a0 ~ $a3 R4 ~ R7 函数调用 – 参数 ×
$t0 ~ $t7 R8 ~ R15 临时寄存器 ×
$s0 ~ $s7 R16 ~ R23 普通的寄存器
$t8 ~ $t9 R24 ~ R25 临时寄存器 ×
$gp R28 Global Pointer 全局指针
$sp R29 Stack Pointer 栈指针
$fp R30 Frame Pointer 栈帧指针
$ra R31 Return Address 返回地址

注意其中 $zero 寄存器是不可写的。所以我们无需考虑其保存问题。。。此外,虽然帧指针 $fp 也是需要保存的,但是实际编程中似乎并不需要我们显式地保存它~~(快进到 Stack.Overflow)~~

内存资源

存储器只能通过数据传输指令访问。MIPS将使用字节编址,这意味着连续的地址之间相差8bit。此外,存储器用于保存数据结构,数组和溢出的寄存器(比如函数形参多于4个,那么寄存器不够用了)

MIPS指令

MIPS指令集的指令非常精简,数目非常少(迫真)。其中指令又根据操作寄存器的数目,分为 R型指令 和 I型指令。

其中 R型指令使用三个寄存器,分别是 rs,rt,rd,分别表示 源1,源2,目的寄存器。
在这里插入图片描述
值得注意的是,R型指令在二进制编码中,寄存器的顺序是 rs, rt, rd,而汇编代码中,我们通常使用 指令 目的寄存器 源寄存器1 源寄存器2 这样的格式。这非常的反人类

再来看 I 型指令:I型指令使用两个寄存器,一个为源一个为目的寄存器。同样的,二进制编码和汇编代码的寄存器位置不统一 多捞哦 要注意顺序。。。

在这里插入图片描述

下面给出所有的MIPS指令:

算数指令

在这里插入图片描述

数据传输指令

在这里插入图片描述

逻辑指令

在这里插入图片描述

分支跳转指令

  • 12
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值