我正在创建一种解释性编程语言,并且我想支持函数调用。
我尝试如下实现。口译员遇到以下情况:
我犹豫是否使用该方法,因为它不是线性的,并且似乎使用了过多的资源。
在已编译的编程语言中,标签和goto用于实现调用功能。它是线性的,仅存储函数体的引用。
例如,此C代码将产生该汇编代码:
C代码:
int sum (int x, int y) {
return x + y;
}
sum(2, 3);
组装代码:
sum:
push ebp
mov ebp, esp
mov eax, [ebp + 8]
mov edx, [ebp + 12]
add eax, edx
pop ebp
ret
push 3
push 2
call sum
add esp, 8
我想实现一种类似于已编译的编程语言所使用的方法。