複製鏈接
請複製以下鏈接發送給好友

子程序調用指令

鎖定
子程序調用指令是指調用子程序指令,包括調用指令(轉子指令)和返回指令(返主指令)。在進行程序設計時,一般都把常用的程序段編寫成獨立的子程序或過程,在需要時隨時調用,調用子程序需要用到調用指令。子程序執行完畢,就需要用返回指令返回到主程序
中文名
子程序調用指令
外文名
subroutine call instruction
學    科
計算機組成原理
定    義
調用子程序的指令
組    成
調用指令和返回指令
有關術語
子程序

子程序調用指令簡介

子程序調用指令的格式為操作碼和目的地址。子程序調用指令的目的地址是子程序的首地址。子程序調用指令用於實現程序與程序之間的轉移,與轉移指令不同(轉移指令用於實現同一程序內的轉移)。子程序調用指令還可以進行嵌套調用,即可調用別的子程序,還可以實現遞歸調用,即直接或間接自己調用自己。
在程序的執行過程中,當需要執行子程序時,可以在主程序中發出子程序調用指令,而當子程序執行完畢後,給出子程序的入口地址,控制程序的執行序列從主程序轉入子程序;而子程序執行完畢後,可以利用返回指令返回主程序,使得程序重新返回主程序發出子程序調用指令的地方,繼續順序執行。在執行調用指令,通常採用堆棧來保存返回地址,即把下一條指令的地址壓入堆棧中保存,子程序執行完畢後,由返回指令壓入堆棧的返回地址從堆棧中彈出,返回調用程序。

子程序調用指令轉子指令和返回指令

在子程序的調用與返回過程中,子程序的入口地址是指子程序第一條指令的地址。用於調用子程序、控制程序的執行從主程序轉向子程序的指令稱為專注指令(子程序調用指令、過程調用指令)。為了正確調用子程序,必須在轉子指令中給出子程序的入口地址。主程序中轉子指令的下一條指令的地址稱為斷點,斷點是子程序返回主程序的返回地址,從子程序返回主程序的指令稱為返回指令。為了在執行返回指令時能夠正確地返回主程序,轉子指令應具有保護斷點的功能。執行轉子指令時保護斷點的方式有多種,常用的有:將斷點保存到子程序第一條指令的前一個字單元;將斷點保存到某一約定的寄存器中;將斷點壓入堆棧。轉子指令和返回指令通常都是無條件的,但也有帶條件的轉子指令和返回指令。條件轉子指令和條件返回指令所需要的條件與轉移指令的條件類似 [1] 

子程序調用指令有關術語

子程序是一個大型程序中的某部分代碼,由一個或多個語句塊組成。它負責完成某項特定任務,而且相較於其他代碼,具備相對的獨立性。一般會有輸入參數並有返回值,提供對過程的封裝和細節的隱藏。這些代碼通常被集成為軟件庫。
主程序,也稱主函數,在許多命令式程序設計語言裏,主函數(main function)是程序開始運行的地方。而相對地,其它編程範式的語言中就很少會有這樣一個概念。
遞歸是一個函數、過程或者數據結構,如果在它們定義的內部又出現有定義本身的應用,則稱它們是遞歸的,或者是遞歸定義的。例如,一個過程的某一步要用到它自身的上一步的結果。遞歸調用就是在當前的函數中調用當前的函數並傳給相應的參數,這是一個動作,這一動作是層層進行的,直到滿足一般情況的的時候,才停止遞歸調用,開始從最後一個遞歸調用返回。
嵌套調用就是某個函數調用另外一個函數(即函數嵌套允許在一個函數中調用另外一個函數),它是一個語言提供的程序設計的方法,也就是語言的特性。
堆棧是一個在計算機科學中經常使用的抽象數據類型。堆棧中的物體具有一個特性: 最後一個放入堆棧中的物體總是被最先拿出來, 這個特性通常稱為後進先出(LIFO)隊列。 堆棧中定義了一些操作。 兩個最重要的是PUSH和POP。 PUSH操作在堆棧的頂部加入一 個元素。POP操作相反, 在堆棧頂部移去一個元素, 並將堆棧的大小減一。
參考資料
  • 1.    張功萱.計算機組成原理:清華大學出版社,2005