如何用解释性编程语言实现函数调用?

时间:2019-04-17 19:59:15

标签: programming-languages

我正在创建一种解释性编程语言,并且我想支持函数调用。

我尝试如下实现。口译员遇到以下情况:

  • 函数声明,将其推送到环境中。
  • 函数调用,获取环境中的函数声明并执行其主体。

我犹豫是否使用该方法,因为它不是线性的,并且似乎使用了过多的资源。

在已编译的编程语言中,标签和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

我想实现一种类似于已编译的编程语言所使用的方法。

0 个答案:

没有答案