Skip to content

Commit e9d516d

Browse files
authored
Update example.md
1 parent c901dc0 commit e9d516d

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

docs/step9/example.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,19 @@ T0 = CALL foo(T1, T2)
5454

5555
`T1``T2`作为被调用函数`foo`的实参,而调用后的返回值保存在`T0`中。
5656

57+
示例可以对应如下的 TAC 程序:
58+
59+
```assembly
60+
func:
61+
_T2 = ADD _T0, _T1
62+
return _T2 # 参数 x 和 y 分别对应 _T0, _T1
63+
main:
64+
_T0 = 1
65+
_T1 = 2
66+
_T2 = CALL func(_T0, _T1) # 调用函数
67+
return _T2
68+
```
69+
5770
实际上这与高级语言的函数语义非常相似。你可能会觉得一个与源语言语义几乎没差别的中间代码函数调用指令有点多余,所以我们也提供了另一种方案(**不推荐按照这样实现,可能会造成数据流分析困难**)。
5871

5972
> 在早先的文档中,函数调用涉及`CALL``PARAM`两种指令。`CALL`指令只对应实际汇编代码的函数调用,而`PARAM T0`指令用于传递一个参数。

0 commit comments

Comments
 (0)