跳轉至內容

Forth/結構 vs. 實際執行操作的詞語

來自華夏公益教科書,開放的書籍,為開放的世界

我們已經描述了透過列出字典中先前定義的詞語的順序來建立詞語定義的過程,這些詞語將在給定的順序中依次執行。可以想象呼叫一個“高階”詞語,它反過來呼叫字典中較低級別的其他“高階”詞語,這些詞語再呼叫更低級別的其他詞語。請注意,所有這些結構都是為了程式設計師、維護以及許多其他良好的理由而存在的。

除了組織先前定義的詞語序列之外,顯然還需要其他東西,而且不能無休止地進行下去。最終,我們必須找到一種不同型別的詞語,它實際上可以執行某些操作:例如,將兩個數字相加,移動一個值,或其他通常與“機器指令”相關的操作。這些被稱為“機器碼詞”。在字典的底部,經典的 Forth 系統包含一組此類詞語,這些詞語實現了一個或多或少標準的“Forth 虛擬機器”。通常,每個機器碼詞都是一個簡短的組合語言指令序列,它們實現了一個特定的標準函式,例如名為 SWAP 的引數堆疊操作。備選實現直接在硬體中實現機器碼詞,例如在 FPGA(現場可程式設計邏輯陣列 ~= 桌面硬體開發環境)的門中。

定義機器碼詞和“高階”詞語的過程在形式上類似於歐幾里得幾何或伯特蘭·羅素和阿爾弗雷德·諾斯·懷特海的《數學原理》[1]等形式化構建的數學系統中的“公理”和“定理”。在 Forth 字典的設計中,考慮了哪些公理是必需的,以及是否需要新增公理以允許先前未定義的操作進行。從這個意義上講,新增一個新的機器碼詞,例如使 TCP/IP 通訊成為可能,而這些通訊無法使用基於先前機器碼詞集的結構來實現,這被視為在字典中新增一個“TCP/IP 通訊公理”。

Forth 程式的執行通常在使用者或其他程序請求執行特定詞語時進行。如果這是一個“高階”詞語,則會混合使用跟蹤呼叫序列並有時到達機器碼詞並在“Forth 虛擬機器”上執行指令。顯然,當專門的硬體提供一組獨特的機器碼詞以傳送訊號給奇異的專用處理器或 I/O 裝置時,這種技術可以帶來巨大的益處。然後新增標準機器碼和更高級別的詞語將提供一個環境,在該環境中,可以在其之上開發額外的“高階”詞語以發揮獨特儀器的功能。

華夏公益教科書