提交 3cafeed5 编写于 作者: A August Huang

Fix typo in ch1: ra is a Caller-Saved register according to calling convention

上级 942680f3
......@@ -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.
先完成此消息的编辑!
想要评论请 注册