当前位置: 首页 > news >正文

MIPS-32架构(寄存器堆,指令系统,运算器)

文章目录

  • 0 Preview:
  • 寄存器
    • 32通用
      • 0 $zero
      • 1 $at
      • 2—3 \$v0-$v1
      • 4—7 \$a0-$a3
      • 8—15 \$t0-$t7
      • 16—23 \$s0-$s7
      • 24—25 \$t8-$t9
      • 26—27 \$k0-$k1
      • 28 $gp
      • 29 $sp
      • 30 $fp
  • 指令系统
  • 运算
  • 存储器

0 Preview:

MIPS架构有32位版本和64位版本,本文介绍32位版本

寄存器

正如笔者曾说,窃以为学习一款架构,首先应该学习的就是寄存器堆,会用寄存器堆,基本就能汇编语言编程,而且寄存器堆也是制作编译器的关键。

  • 32个寄存器
  • 3个特殊寄存器

每个寄存器都是32bits,也就是一个word

32通用

首先通过这张表格总览:
MIPS32个通用寄存器概览

0 $zero

the constant value zero, 零号寄存器,编号为0,存储的值也永远为0,主要用于在一些指令中起辅助作用,实现复制、掩码等功能。

例1.实现分支:
在这里插入图片描述

1 $at

保留寄存器,用于处理32位立即数

2—3 $v0-$v1

values,用于保存函数返回值

4—7 $a0-$a3

用于保存函数的前四个参数,过程调用时不用保存,但如果是嵌套过程(即递归)就需要保存

8—15 $t0-$t7

temporaries, 用于存放一些临时产生的计算的中间结果,调用子过程的话不用保存

16—23 $s0-$s7

saved values,编译期将程序中的那些有名变量保存在 s 0 − s0- s0s7中,调用其他过程的话需要压栈保存这些寄存器的值

24—25 $t8-$t9

t 0 − t0- t0t7的扩充,

26—27 $k0-$k1

saved for OS kernel ,用于异常处理,

28 $gp

global pointer 全局指针,存放一个地址,指向内存中静态区(也称全局区)的中间位置,用于定位整个静态区

29 $sp

stack pointer 栈指针,存放栈顶位置,也就是内存中栈区的顶部位置,也就是栈区的地址最小的位置(栈区是栈底到栈顶地址逐渐减小)

30 $fp

指令系统

掌握了各个寄存器的功能之后我们就可以学习指令系统并进行汇编编程

MIPS指令系统,按照寻址方式可以分为5种:

  • 基址寻址
  • 立即数寻址
  • 直接寻址

运算

(TODO)

存储器

(TODO)

相关文章:

  • 网络空间安全(45)PHP入门学习
  • 电影交流|基于Java+vue的电影交流平台小程序系统(源码+数据库+文档)
  • 封装了一个优雅的iOS全屏侧滑返回工具
  • [蓝桥杯 2023 省 A] 网络稳定性
  • 鸿蒙富文本实践
  • RK3588使用笔记:系统换源
  • 【YOLO系列】基于YOLOv8的无人机野生动物检测
  • 【NLP】14. NLP推理方法详解 --- beam search 束搜索 以及 graph search 图搜索
  • Nginx学习笔记(一)
  • 人工智能图像识别Scala基础
  • Vue2——组件的注册与通信方式、默认插槽、具名插槽、插槽的作用域
  • 数智化时代下开源AI大模型驱动的新型商业生态构建——基于AI智能名片与S2B2C商城小程序的融合创新研究
  • PH热榜 | 2025-03-30
  • 机器学习:人工智能的核心驱动力
  • windows权限提升 win+iss 宝塔bypass Msf进行提取
  • 优秀的 Vue.js 入门开源项目推荐
  • Python第七章01:文件的读取操作
  • AI 强化学习
  • Shell教程
  • 【质量管理】纠正、纠正措施和预防的区别与解决问题的四重境界
  • 网站如何去分析/公众号推广渠道
  • 新建网站/百度官网首页登陆
  • 时网站建设公司管理/长沙关键词优化新行情报价
  • 美女做丝袜广告视频网站/批量查询神马关键词排名
  • 自己制作的网站怎么发布/信息流广告文案
  • 长沙公司网站开发/百度公司地址