编译器设计中的绑定和绑定时间是什么?


程序元素与特定特性或属性的绑定是指从一组可能的属性中选择属性的过程。在程序组织或处理过程中做出此选择的时间定义为该元素该属性的绑定时间。编程语言中有多种类型的绑定,以及多种绑定时间。它还可能涉及绑定和绑定时间方面的程序元素属性,这些属性由语言的定义或其执行决定而保持不变。

绑定时间类型

有两种绑定时间类型,如下所示:

  • 执行时间(运行时)- 一些绑定在程序执行期间实现。这些包含变量与其值的绑定,以及变量与特定存储区域的绑定。运行时绑定的属性如下:

    • 进入子程序或块时- 在某些语言中,绑定仅限于在执行期间进入子程序或块时出现。

    • 在执行过程中的任意点- 一些绑定可以在程序执行的任何点出现。一个例子是通过赋值将变量绑定到值的绑定,而某些语言(如LISP、Smalltalk和ML)允许将名称绑定到存储位置也出现在程序中的任意点。

  • 翻译时间(编译时间)- 有三种不同的翻译时间绑定类型,如下所示:

    • 由程序员选择的绑定- 在编写程序时,程序员会自觉地做出一些关于变量名、变量类型、程序语句结构等的决策,这些决策描述了翻译期间的绑定。语言翻译器利用这些绑定来决定目标代码的最终结构。

    • 由翻译器选择的绑定- 一些绑定是由语言翻译器选择的,无需程序员直接参与。例如,阶段中为数据对象分配的存储区的相对区域通常是在没有程序员的知识或干预的情况下管理的。

    • 由加载器选择的绑定- 一个程序通常包含多个子程序,这些子程序应该组合成一个可执行程序。翻译器通常将变量绑定到每个子程序的存储名称内的地址。此存储应该被分配到将实现该程序的物理计算机中的实际地址。

更新于:2021年10月22日

10K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告