Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rcore-os
RCore Tutorial Book V3
提交
3cafeed5
R
RCore Tutorial Book V3
项目概览
rcore-os
/
RCore Tutorial Book V3
9 个月 前同步成功
通知
3
Star
938
Fork
153
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
RCore Tutorial Book V3
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3cafeed5
编写于
7月 09, 2023
作者:
A
August Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix typo in ch1: ra is a Caller-Saved register according to calling convention
上级
942680f3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
1 addition
and
1 deletion
+1
-1
source/chapter1/5support-func-call.rst
source/chapter1/5support-func-call.rst
+1
-1
未找到文件。
source/chapter1/5support-func-call.rst
浏览文件 @
3cafeed5
...
...
@@ -163,7 +163,7 @@
剩下的 5 个通用寄存器情况如下:
- zero( ``x0`` ) 之前提到过,它恒为零,函数调用不会对它产生影响;
- ra( ``x1`` ) 是
被
调用者保存的。被调用者函数可能也会调用函数,在调用之前就需要修改 ``ra`` 使得这次调用能正确返回。因此,每个函数都需要在开头保存 ``ra`` 到自己的栈帧中,并在结尾使用 ``ret`` 返回之前将其恢复。栈帧是当前执行函数用于存储局部变量和函数返回信息的内存结构。
- ra( ``x1`` ) 是调用者保存的。被调用者函数可能也会调用函数,在调用之前就需要修改 ``ra`` 使得这次调用能正确返回。因此,每个函数都需要在开头保存 ``ra`` 到自己的栈帧中,并在结尾使用 ``ret`` 返回之前将其恢复。栈帧是当前执行函数用于存储局部变量和函数返回信息的内存结构。
- sp( ``x2`` ) 是被调用者保存的。这个是之后就会提到的栈指针 (Stack Pointer) 寄存器,它指向下一个将要被存储的栈顶位置。
- fp( ``s0`` ),它既可作为s0临时寄存器,也可作为栈帧指针(Frame Pointer)寄存器,表示当前栈帧的起始位置,是一个被调用者保存寄存器。fp 指向的栈帧起始位置 和 sp 指向的栈帧的当前栈顶位置形成了所对应函数栈帧的空间范围。
- gp( ``x3`` ) 和 tp( ``x4`` ) 在一个程序运行期间都不会变化,因此不必放在函数调用上下文中。它们的用途在后面的章节会提到。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录