宏處理程式

宏處理程式

宏處理程式是指把源程式中的宏指令或宏語句擴展成等價的、預先定義的指令序列或語句序列的處理系統。

基本介紹

  • 中文名:宏處理程式
  • 外文名:macro processor
  • 實現:兩遍算法
  • 作用對象:宏指令、宏語句等
  • 功能:增加嵌套宏定義、嵌套宏調用等
  • 學科:計算機科學
簡述,基本概念,實現方法,

簡述

宏處理程式考慮源檔案與彙編程式考慮源檔案是大不相同的。對於彙編程式來說。源檔案是一系列控制行、指令行和命令行;對於宏處理程式而言,源檔案則是一長串字元。
在彙編代碼之前必須先完成源檔案的全部宏處理。由於宏處理與代碼彙編無關,因此必須把宏處理時間和彙編時間區分開,在宏處理時間,彙編語言的符號、標號、事先定義的彙編程式符號和EQU符號以及定位計數器都是未知的。宏處理程式、識別不出彙編語言的格式。同樣,在彙編時也不知道宏程式的任何信息。
宏處理程式掃描源檔案,尋找宏調用。宏調用實際上是請求宏處理程式來再定義一個用戶定義宏或者用宏處理所定義的值來替換一個內部宏或用戶定義宏。
宏的定義值或回送值就是替換宏調用的文本。有些宏的回送值是零串(即不含字元的字元串),換言之,當調用這些宏時,會把調用從輸入檔案中移開,彙編程式根本不會感覺到它的存在,這對於條件彙編是非常有用的。
因此,在遇到宏調用時,宏處理程式把該宏調用展開成它的回送值。然後把宏的回送值送給彙編程式並繼續執行宏處理程式,把不屬於宏調用部分的全部字元都送到彙編程式中去。

基本概念

宏指令或宏語句實際上是按規定格式書寫的某一源程式段的縮寫。它們通常是用戶根據自己的特定需要,採用程式設計語言所提供的指令或語句來定義,稱之為宏定義,其中應給出宏的名字、格式、參數和等價的指令序列或語句序列。
對於常用的宏指令或宏語句亦可由系統預先定義,供用戶直接引用。當用戶在程式中要使用宏指令或宏語句功能時,只要按宏定義的格式,給出宏的名字及其相應的參數即可,這稱之為宏調用。
當宏處理程式將源程式中出現的宏調用擴展成等價的宏指令序列或宏語句序列時,稱之為宏擴展。
建立宏處理程式後,用戶可以方便地定義和使用自己所需的宏指令或宏語句。這不僅能簡化應用程式的編寫,而且有助於軟體人員研究和移植有關的軟體。例如,利用宏指令或宏語句設計虛擬機,研究新的語言,以及生成帶有變化成分的軟體等。

實現方法

宏處理程式通常採用兩遍算法實現:第一遍收集宏定義的信息;第二遍對源程式中的宏調用實施宏擴展。在第一遍掃描中,遇到宏定義時,應把名字、格式、參數等信息以及隨後的等價的指令序列或語句序列記錄到宏定義表中。對於源程式中宏定義以外的部分,將不加改變地複寫到目標程式區中。第二遍掃描第一遍所產生的中問結果程式。遇到宏調用時,則將宏定義表中相應的等價指令序列或語句序列複寫到目標程式區中。複寫過程中,要用宏調用中的實在參數替換宏定義中的形式參數。如果限制每個宏調用只能調用前面已定義的宏指令或宏語句,那么這種宏處理程式的實現算法可合併成一遍算法來完成。
功能較強的宏處理程式還可增加嵌套宏定義、嵌套宏調用或條件宏處理等功能。如果宏定義中含有另外的宏定義,則稱為嵌套宏定義。如果宏定義A中出現宏調用,那么在擴展A的宏調用過程中,又要進一步轉去擴展其他的宏調用,這種情況稱為嵌套宏調用。如果宏處理程式能根據宏調用中的特殊參數,有選擇地把宏調用擴展成不同的指令序列或語句序列,則稱為條件宏處理。

相關詞條

熱門詞條

聯絡我們