搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家自动化
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
HTTP常见状态码_.getrequest( code:1000
2
解决Git推送错误:Updates were rejected的完整指南_hint: updates were rejected because the remote con
3
微信js扫一扫,扫条码去掉code_128
4
AIGC批量图生成的一些思考
5
LlamaIndex 联合创始人下场揭秘:如何使用私有数据提升 LLM 的能力?_llama-index 能不能不使用openai
6
如何使用ADB抓取pad上的日志并导出本地【windows】_adb平板日志
7
顶级咨询公司常用的10大数据分析模型
8
element-ui tree树形控件 自定义节点内容_element tree 自定义节点
9
三种获取苹果设备UID的方式_查看苹果手机identifier
10
flutter 让TextFeild可以根据输入法上移_flutter textfield背景上移
当前位置:
article
> 正文
MIPS体系结构(1)_mips v1
作者:我家自动化 | 2024-03-20 08:18:11
赞
踩
mips v1
MIPS
中的寄存器
32
个通用寄存器:
寄存器编号 助记符 用法
0 zero 永远返回值为0
1 at 用做汇编器的暂时变量
2-3 v0, v1 子函数调用返回结果
4-7 a0-a3 子函数调用的参数
8-15 t0-t7 暂时变量,子函数使用时不需要保存与恢复
24-25 t8-t9
16-23 s0-s7 子函数寄存器变量。子函数必须保存和恢复使用过的变量在函数返回之前,从而调用函数知道这些寄存器的值没有变化。
26,27 k0,k1 通常被中断或异常处理程序使用作为保存一些系统参数
28 gp 全局指针。一些运行系统维护这个指针来更方便的存取“static“和”extern"变量。
29 sp 堆栈指针
30 s8/fp 第9个寄存器变量。子函数可以用来做桢指针
31 ra 子函数的返回地址
寄存器名约定与使用:
*at: 这个寄存器被汇编的一些合成指令使用。如果你要显式地使用这个寄存器(比如在异常处理程序中保存和恢复寄存器),有一个汇编directive 可被用来禁止汇编器在directive 之后再使用at 寄存器(但是汇编的一些宏指令将因此不能再可用)。
*v0, v1: 用来存放一个子程序(函数)的非浮点运算的结果或返回值。如果这两个寄存器不够存放需要返回的值,编译器将会通过内存来完成。
*a0-a3: 用来传递子函数调用时前4 个非浮点参数。在有些情况下,这是不对的。
* t0-t9: 依照约定,一个子函数可以不用保存并随便的使用这些寄存器。在作表达式计算时,这些寄存器是非常好的暂时变量。编译器/程序员必须注意的是,当调用一个子函数时,这些寄存器中的值有可能被子函数破坏掉。
*s0-s8: 依照约定,子函数必须保证当函数返回时这些寄存器的内容必须恢复到函数调用以前的值,或者在子函数里不用这些寄存器或把它们保存在堆栈上并在函数退出时恢复。这种约定使得这些寄存器非常适合作为寄存器变量或存放一些在函数调用期间必须保存原来值。
* k0, k1: 被OS 的异常或中断处理程序使用。被使用后将不会恢复原来的值。因此它们很少在别的地方被使用。
* gp: 如果存在一个全局指针,它将指向运行时决定的,你的静态数据(static data)区域的一个位置。这意味着,利用gp 作基指针,在gp 指针32K 左右的数据存取,系统只需要一条指令就可完成。如果没有全局指针,存取一个静态数据区域的值需要两条指令:一条是获取有编译器和loader 决定好的32 位的地址常量。另外一条是对数据
的真正存取。为了使用gp, 编译器在编译时刻必须知道一个数据是否在gp 的64K 范围之内。通常这是不可能的,只能靠猜测。一般的做法是把small global data (小的全局数据)放在gp 覆盖的范围内(比如一个变量是8 字节或更小),并且让linker 报警如果小的全局数据仍然太大从而超过gp 作为一个基指针所能存取的范围。并不是所有的编译和运行系统支持gp 的使用。
*sp: 堆栈指针的上下需要显示的通过指令来实现。因此MIPS 通常只在子函数进入和退出的时刻才调整堆栈的指针。这通过被调用的子函数来实现。sp 通常被调整到这个被调用的子函数需要的堆栈的最低的地方,从而编译器可以通过相对於sp 的偏移量来存取堆栈上的堆栈变量。详细可参阅10.1 节堆栈使用。
* fp: fp 的另外的约定名是s8。如果子函数想要在运行时动态扩展堆栈大小,fp 作为桢指针可以被子函数用来记录堆栈的情况。一些编程语言显示的支持这一点。汇编编程员经常会利用fp 的这个用法。C 语言的库函数alloca()就是利用了fp 来动态调整堆栈的。如果堆栈的底部在编译时刻不能被决定,你就不能通过sp 来存取堆栈变量,因此fp 被初始化为一个相对与该函数堆栈的一个常量的位置。这种用法对其他函数是不可见的。
* ra: 当调用任何一个子函数时,返回地址存放在ra 寄存器中,因此通常一个子程序的最后一个指令是jr ra.
子函数如果还要调用其他的子函数,必须保存ra 的值,通常通过堆栈。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家自动化/article/detail/271932
推荐阅读
article
Java
学习笔记:
面向对象
...
Java
学习笔记:
面向对象
Java
学习笔记:
面向对象
J...
赞
踩
article
c#
模拟
鼠标
操作,控制其
移动
速度...
c#
模拟
鼠标
移动
,控制其
移动
速度。
c#
模拟
鼠标
操作,控制其
移动
速度 ...
赞
踩
article
开源
OA
办公
平台搭建教程:
O2
OA
+
Arduino
实现物
联网
应用(二)_
o2oa
物
联网
...
O2
OA
平台搭建
O2
OA
的开发环境非常简单,安装服务器后即可通过浏览器进行开发了和使用。具体可参考文档库中的其他文档,有...
赞
踩
article
win10
如何
关闭
系统
进程
【
系统
天地】
_
win10
禁用
进程
csdn
...
有很多电脑用户在使用
win10
系统
的时候,经常都能够碰到
系统
运行卡顿一系列问题,这个时候,我们都会选择关闭一些
系统
进程
以...
赞
踩
article
计算机组成原理(4.3)——
MIPS
指令系统
(RSIC)_
16
位
立即
数如何扩展为
32
位
...
前一篇文章分析了
指令系统
(ISA)的设计方法,这里以
MIPS
指令系统
为例进行分析前文链接:计算机组成原理(4.1)—— ...
赞
踩
article
从.
net
Framework4.
6
WPF
升级到.
net
core3.1/
net
5/
6
/7.0版本_n...
本文通过upgrade-assistant工具(.
net
升级助手)使用命令行:upgrade-assistant upg...
赞
踩
article
android
画图
函数
,
Android
开发
实现
各种
图形
绘制
功能示例...
本文实例讲述了
Android
开发
实现
各种
图形
绘制
功能。分享给大家供大家参考,具体如下:这里结合本人的开发事例,简单介绍一...
赞
踩
article
cJSON
的部分用法
_
tv
.
tv
_
usec
/
1000
...
cJSON
* createJson(string alarm
_
code){
cJSON
* root =
cJSON
_
Cr...
赞
踩
article
【
IntelliJ
IDEA
】
Idea
版本控制
修改
文件
后要让
文件
夹也随之变颜色的
操作步骤
...
idea怎么让修改
文件
后所在的
文件
夹也跟着变色新版本旧版本不一样。【
IntelliJ
IDEA
】
Idea
版本控制
修改
文件
...
赞
踩
article
android
studio
那些事
_
android
studio
每次
gradle
总要
下载
很多
东西...
1.新建项目总是要
下载
很多
gradle
相关文件解决:解决Android Studio新建或导入工程总是重新
下载
gradl...
赞
踩
article
activiti
多
实例
任务_
activiti
多
实例
...
1.1.1.前言分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.ne...
赞
踩
article
你们的M1
Mac
(
sonoma
) 使用
navicat
崩溃
吗?找到解决方法了
_
mac
navic...
访达中也打不开的话,可以执行这行命令,再在访达中也打开试试!好消息好消息:找到解决方法了。
_
mac
navicat
e 总...
赞
踩
article
.
NET
微
服务
迁移至.
NET
6.0的故事...
本次迁移涉及的是公司内部一个业务子系统,该系统是一个多样化的应用,支撑着公司的多个业务方向。目前,该系统由40多个基于....
赞
踩
article
Vscode:Import “
numpy
“
could
not be
resolved
Pylance...
可视化展示的第一步,
numpy
库的安装,不能被挡在第一步之外_
import
"
numpy
"
could
not be r...
赞
踩
article
华为
手表
使用
自制
表盘
_
华为
表盘
文件
...
华为
手机
使用
自制
表盘
_
华为
表盘
文件
华为
表盘
文件
我
使用
的是会为watch fit 手表,市场上的...
赞
踩
article
基于
Android
的
家校
联系
平台
开发
(论文)_
交互式
家校
教育
平台
项目
概述
怎么写...
源码下载 http://www.byamd.xyz/hui-zong-1/1
概述
1.1 研究背景和意义社会的发展,智能...
赞
踩
article
Spring
Boot
+
JSP
启动
报404
错误
找不到页面_
jsp
项目部署不能找到登陆界面...
IDE: idea2017.1.2
启动
方式:右击
启动
类, run现象:程序
启动
正常,
jsp
页面访问不了解决方法:mvn ...
赞
踩
article
浅谈
AI
大
模型
的崛起与未来展望:
马斯克
的 x
AI
与中国
产业
发展_ai
大
模型
产业
...
近日,“反
AI
斗士”
马斯克
宣布成立 x
AI
人工智能公司,旨在探索宇宙真正本质。同时,在中国,
AI
产业
经历了上半年...
赞
踩
article
PyTorch
实战-实现
神经网络
图像分类基础
Tensor
最全操作
详解
(一)_
详解
基于
tensor
...
Tensor
是
PyTorch
中最基本的数据结构,可以看作是一个多维数组(矩阵的扩展)。与NumPy中的数组类似,与其不同...
赞
踩
article
推荐8
个
免费
好用
的
网站
_
网站
推荐
免费
的
...
1.办公人导航,这是一
个
非常实用
的
办公类网址导航
网站
,收录了很多优质
的
网站
及软件资源,特别适合办公室工作上网使用。图片在...
赞
踩
相关标签
java
学习
笔记
c#
开发语言
c++
github
物联网
办公软件
oa办公
计算机组成原理
ISA
指令系统
MIPS
.netcore
wpf
WINFORM
.net
升级
android 画图函数
cjson
intellij-idea
ide
实例