編譯器設計中的繫結和繫結時間是什麼?


程式元素與特定特性或屬性的繫結是指從一組可能的屬性中選擇屬性的過程。在程式組織或處理過程中做出此選擇的時間定義為該元素該屬性的繫結時間。程式語言中有多種型別的繫結,以及多種繫結時間。它還可能涉及繫結和繫結時間方面的程式元素屬性,這些屬性由語言的定義或其執行決定而保持不變。

繫結時間型別

有兩種繫結時間型別,如下所示:

  • 執行時間(執行時)- 一些繫結在程式執行期間實現。這些包含變數與其值的繫結,以及變數與特定儲存區域的繫結。執行時繫結的屬性如下:

    • 進入子程式或塊時- 在某些語言中,繫結僅限於在執行期間進入子程式或塊時出現。

    • 在執行過程中的任意點- 一些繫結可以在程式執行的任何點出現。一個例子是透過賦值將變數繫結到值的繫結,而某些語言(如LISP、Smalltalk和ML)允許將名稱繫結到儲存位置也出現在程式中的任意點。

  • 翻譯時間(編譯時間)- 有三種不同的翻譯時間繫結型別,如下所示:

    • 由程式設計師選擇的繫結- 在編寫程式時,程式設計師會自覺地做出一些關於變數名、變數型別、程式語句結構等的決策,這些決策描述了翻譯期間的繫結。語言翻譯器利用這些繫結來決定目的碼的最終結構。

    • 由翻譯器選擇的繫結- 一些繫結是由語言翻譯器選擇的,無需程式設計師直接參與。例如,階段中為資料物件分配的儲存區的相對區域通常是在沒有程式設計師的知識或干預的情況下管理的。

    • 由載入器選擇的繫結- 一個程式通常包含多個子程式,這些子程式應該組合成一個可執行程式。翻譯器通常將變數繫結到每個子程式的儲存名稱內的地址。此儲存應該被分配到將實現該程式的物理計算機中的實際地址。

更新於:2021年10月22日

10K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.