搜索
查看
编辑修改
首页
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
开源版“Devin”AI程序员炸场:自己分析股票、做报表、建模型
2
nas-群晖docker查询注册表失败解决办法(平替:使用SSH命令拉取ddns-go)
3
【ChatGPT实战】12.一键免费部署你的私人-ChatGPT-网页
4
测试的常用工具介绍,Fiddler、Postman、JMeter_测试前后端的工具
5
华为手机发布鸿蒙系统,华为发布鸿蒙系统,默认的纯净模式实则还是资本的剥削?...
6
HTML5音乐播放器源代码示例_html5音乐播放器源码
7
php进度条实例,PHP利用APC模块实现上传进度条的实例分享
8
Android 10 根文件系统和编译系统(二十一):Android root根目录生成过程分析_旗浩 rom
9
k8s实践(五):容器探针(liveness and readiness probe)
10
MySQL数据库基本操作和数据库主键,外键,视图,触发器,事务等详细介绍_数据库库主键外键还有一些触发器是什么
当前位置:
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
私有化部署自己的
ChatGPT
,
免费
开源的
chatgpt
-
next
-
web
搭建_
chatgpt
免费
版...
一键
免费
部署你的跨平台私人
ChatGPT
应用, 支持 GPT3, GPT4 & Gemini Pro 模型。_cha...
赞
踩
article
Android
EditText
获取
焦点
和
失去
焦点
监听事件
_
adb
焦点
移动监测...
实现方法也很简单、那就是绑定OnFocusChangeListener事件、实现onFocusChange(View v...
赞
踩
article
鸿蒙
浏览器
是
华为
,
鸿蒙
javascript
项目开发
----
华为
轻量级
运动手表...
鸿蒙
javascript
项目开发
----
华为
轻量级
运动手表
鸿蒙
javascript
项目开发
----
华为
轻量级
运动手表没有...
赞
踩
article
android
studio
安装
教程_
android
studio
zip
版如何使用...
百度搜索Android
studio
,或者直接输入http://www.
android
-
studio
.org进入这个页面...
赞
踩
article
VB.
net
或者C#
编写
按键精灵
DLL
教程
_
vb.
net
按键精灵
...
首先创建一个类库然后删除掉默认的类,当然留着也可以接下去添加 新建项然后添加COM类 随便取一个名字,记住,不能中文,不...
赞
踩
article
fiddler
的
下载安装
_
fiddler
官网...
这里写自定义目录标题
fiddler
官网新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片...
赞
踩
article
ffmpeg
实用命令
--
截取
视频
_
ffmpeg
截取
...
对应的时间戳检索方式称为输入检索(inputing seek)。参数之后(作为输出参数),FFmpeg 都实质将参数值当...
赞
踩
article
计算机
系统原理_
计算机
组成原理左
归
右
归
...
目录进制(2/8/10/16)原码/反码/补码数的表示整数(int)浮点数(float/double)进制(2/8/10...
赞
踩
article
解决
Win10
中ALT+
Tab
键
Edge
出现多个页面的问题_
win10
用
alt
+
tab
切换
窗口
为什么
...
问题示例解决方式打开设置点进系统,找到多任务处理将Alt+
Tab
显示选项设为如图示例_
win10
用
alt
+
tab
切换
窗口
...
赞
踩
article
Ai
缺失
字体
解决方法_
ai
缺少
helvetica
字体
...
今天用
Ai
打开Matlab 的eps 图片提示缺失
字体
,解决方法如下:本文教你如何在Windows电脑上向Illust...
赞
踩
article
ChatGLM3
-
6B
模型
介绍及
微调
...
对
ChatGLM3
-
6B
-Base 的测试中,BBH 采用 3-shot 测试,需要推理的 GSM8K、MATH 采用...
赞
踩
article
【
uiautomation
】
键
指令
大全(以及三种调用方式)+常用
鼠标
动作+
SendKeys
+Insp...
以上就实现了代码运行后,按空格结束运行的过程。一般来说,auto.IsKeyPressed()函数中跟的是某个
指令
,可以...
赞
踩
article
python
运行警告_ UserWarning: To
copy
construct
from
a ...
这个警告是 PyTorch 给出的建议,提示你在构造新的张量时最好使用
tensor
.clone().detach() ...
赞
踩
article
pytorch
中
Tensor
.
new
()的使用...
pytorch
中
Tensor
.
new
()的使用一、作用创建一个新的
Tensor
,该
Tensor
的type和device...
赞
踩
article
详解
PyTorch
Tensor
数据
类型
——张量_
tensor
数据
...
在
PyTorch
中,视频可以被表示为一个5维的张量,其中第0维表示批次数,第1维表示帧数,第2维表示通道数,第3维表示高...
赞
踩
article
CISP
4.2
备考之《
安全
支撑
技术
》
知识点
总结
...
CISP
4.2
备考之《
安全
支撑
技术
》
知识点
总结
CISP
4.2
备考之《
安全
支撑
技术
》
知识点
总结
...
赞
踩
article
基于
概率
的
矩阵
分解
原理详解(
PMF
)_
概率
矩阵
分解
模型
使用
公式
...
上一篇博客讲到了推荐系统中常用
的
矩阵
分解
方法,Regularized MF是对Basic MF
的
优化,而
PMF
是在Reg...
赞
踩
article
我们浏览器输入“
http
://
localhost
:8080/
index
.
htm
l”返回404_htt...
maven的web项目在Eclipse中使用Tomcat调试
http
s://marionette.iteye.com/b...
赞
踩
article
SQLite
的
使用
...
在本文,我们了解了如何
使用
SQLite
,包括其安装过程以及如何对流行的 Chinook 数据库示例执行基本 SQL 操...
赞
踩
article
【
GitHub
项目
推荐--自动
生成
视频
】【
转
载】_
githubtext
转
视频
项目
...
有些在抖音、快手上的
视频
获得了数百万的观看次数,你仔细分析他们的
视频
,他们唯一做的原创事情收集材料、然后拼接在一起。尤其...
赞
踩
相关标签
人工智能
chatgpt
ai
gpt
ChatGPTnextweb
鸿蒙浏览器是华为
android studio
fiddler
ffmpeg
音视频
经验分享
chatGLM
AI
NLP
python
深度学习
开发语言
pytorch
Tensor.new