參閱系統程式
組譯器
雖然以文字符號來取代機器碼, 使得人們更容易閱讀了, 但卻導致電腦看不懂, 以致無法直接交由CPU 執行。因此必須透過一個翻譯的動作, 將這個用組合語言寫成的程式碼轉換成電腦看得懂的形式, 負責這個翻譯動作的就是組譯器(Assembler)。
經過組譯器轉成的檔案稱之為目的檔, 接著還需連結器與載入器, 才能載入到記憶體中執行。
連結器
經組譯器轉成的目的檔, 本來是可以執行的, 但是為了保持彈性, 目的檔有許多地方並未翻譯成機器碼, 其原因有二:
1.程式可能會呼叫到其他的程式(External Reference) , 但組譯器只處理程式本身而已, 因此對於程式中呼叫到其他程式的部份並無法處理。
2.現今的作業系統, 大多可在同時間執行多個程式, 因此同時間執行的程式可能被載入到不同的位址執行, 所以程式的機器碼必須是可重新定址的(Relocatable), 亦即可以在不同的載入位址上執行。這也是組譯器無法做到的。
連結器(Linker) 就是用來將相互呼叫的各程式目的檔連結(Linking) 在一起, 產生可重新定址的機器碼檔案。
載入器
載入器(Loader) 負責將程式的機器碼檔案載入到記憶體中執行, 主要的功能有以下3 項:
1.要求記憶體空間:程式未執行前, 它是儲存在磁碟空間裡。當程式要被執行時, 需要分配到一塊記憶體空間, 然後才能載入、執行。因此要執行程式時, 載入器會向作業系統發出要求(Request) 配置一段足夠的記憶體空間。當作業系統有可用的空間時, 就會回覆載入器所分配空間的起始位址。
2.重新定址:當作業系統回報分配到的起始位址後, 載入器接著就會調整機器碼中有關位址的地方, 讓程式將來可以正確地被執行。
3.載入到記憶體:將已調整好的機器碼載入到記憶體中, 等待作業系統執行。
編譯器
使用高階語言來撰寫程式碼, 不但更容易閱讀和理解, 也比用低階語言所寫出來的程式碼精簡多了。
不過電腦並無法看懂這樣的程式碼, 和組合語言一樣需要一個轉譯的動作, 將使用高階語言所撰寫的程式碼轉換成電腦所能看懂的機器語言, 然後才能執行。
這個轉換的動作是由各個程式語言的編譯器(Compiler) 或是直譯器(Interpreter) 進行。
九十四年公務人員初等考試試題資料處理大意