Skip to content

Commit 5269446

Browse files
authored
Update example.md
1 parent 980916b commit 5269446

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

docs/step9/example.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ main_exit:
228228

229229
3. **用栈传递参数(可选)**:调用约定规定`a0``a7`存放不下的参数需要用栈传递(**为了降低大家的实现难度,基础实验中我们不对参数超过8个的传参实现进行测试**)。若参数`vi`在物理寄存器`xj`中,则直接将`xj`“压栈”;否则任选一个`a0`~`a7`之外的volatile寄存器`tk`,我们先通过`emitLoadFromStack``vi`加载到`tk`,然后“压栈”`tk`(建议直接使用`t0`寄存器)。需要注意这里的“压栈”不能直接用`emitStoreToStack`,我们需要手动生成一条`NativeStoreWord`指令,而且它无需也不应该修改栈指针`sp`。在所有参数入栈后,统一修改`sp`
230230

231-
4. **进行真正的函数调用**:可以使用`emitNative`来生成一条调用指令。如果上一步中存在栈传参,别忘了在调用后把`sp`改回来(清除栈上传递的参数)。
231+
4. **进行真正的函数调用**:可以使用`emitAsm`来生成一条调用指令。如果上一步中存在栈传参,别忘了在调用后把`sp`改回来(清除栈上传递的参数)。
232232

233233
5. **妥善处理函数返回值**:根据调用约定,函数返回值会存放在`a0`寄存器中。如果你在指令选择中为函数调用单独增添了将`a0`复制到目标临时变量的指令,这里无需处理。你也可以选择直接将目标临时变量绑定到`a0`
234234

0 commit comments

Comments
 (0)