From c901dc0428296ab58fece18d9ff06ba5d25cd244 Mon Sep 17 00:00:00 2001 From: Ruwen Fan Date: Mon, 21 Oct 2024 21:27:37 +0800 Subject: [PATCH] Update example.md --- docs/step9/example.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/step9/example.md b/docs/step9/example.md index be9e6129..7449f983 100644 --- a/docs/step9/example.md +++ b/docs/step9/example.md @@ -54,11 +54,11 @@ T0 = CALL foo(T1, T2) `T1`和`T2`作为被调用函数`foo`的实参,而调用后的返回值保存在`T0`中。 -实际上这与高级语言的函数语义非常相似。你可能会觉得一个与源语言语义几乎没差别的中间代码函数调用指令有点多余,所以我们也提供了另一种方案。 +实际上这与高级语言的函数语义非常相似。你可能会觉得一个与源语言语义几乎没差别的中间代码函数调用指令有点多余,所以我们也提供了另一种方案(**不推荐按照这样实现,可能会造成数据流分析困难**)。 > 在早先的文档中,函数调用涉及`CALL`和`PARAM`两种指令。`CALL`指令只对应实际汇编代码的函数调用,而`PARAM T0`指令用于传递一个参数。 -> 假设我们有若干个参数,可以依次使用 PARAM 命令将它们加入参数列表。在调用函数时,这些参数的值会自动依次按顺序装载到临时变量 _T0, _T1 ... 中。比如我们有这样一段 TAC 程序(**不推荐按照这样实现,可能会造成数据流分析困难**): +> 假设我们有若干个参数,可以依次使用 PARAM 命令将它们加入参数列表。在调用函数时,这些参数的值会自动依次按顺序装载到临时变量 _T0, _T1 ... 中。比如我们有这样一段 TAC 程序: ```assembly PARAM A