1.1 系統程式
為公用程式、庫存函數,不包含app程式
除錯工具
- Program Trace
- Debugger
Macro Processor
- Macro Definition
- Macro Call (open subroutine) 展開花費較多記憶體
- Function Call (close subroutine),花費較少的的記憶體,透過stack保存subroutine
- 空間換時間: Macro Call
- 時間換空間: Function Call
文字編輯器
- 排版 (Typesetting)
1.2 translator 轉譯器
類型
- 編譯器
- 組譯器
- 直譯器(解譯器)
編譯器
source =>編譯器=>目的碼=>連結=>可執行模組=>載入器=>執行
組譯器
source => 組譯器 => 機器碼=>linker=>可執行模組=>載入器=>執行
直譯器
source => interpreter => 中間碼(intermediate code) => interpreter => 執行 => 重複
- 程式直接透過直譯器執行
- 程式碼轉成中間碼
- 直譯器執行中間碼
功能
- 直接執行source code
- 轉成intermediate code(不產生機械碼)
- 不會因為單一指令導致無法執行程式
Java
Java 分類傾向直譯器,雖然官方宣稱為編譯器。
- byte code (中間碼)
- 透過java run module(jvm?)執行
1.3 Loader and linker
廣義解釋loader與Linker用途類似,狹義來講兩者功能不同
Linker
不同object使用外部參考變數(label定義在其他的程式上)時透過linker將帶換成指定offset。
Loader
將執行模塊載入記憶體並且執行
Loader and Linker
- 分派(allocation): 分派記憶體位置
- 連結(linking): 連結外部參考變數
- 重新定位(Relocation): 處理程式載入的base
- 載入(loading): 載入記憶體並且執行
1.4 作業系統
作業系統
在bare machine(沒有軟體或韌體的硬體)執行
四大管理
- 記憶體管理(memory)決定程式能否佔有記憶體
- 處理器管理(processor/ process) 處理器使用,進程管理
- 設備管理(Device) 管理IO設備運作,管理驅動程式
- 資訊管理(Information)儲存媒體的檔案結構與內容
1.5 系統軟體與機器結構的關係
機器相關
指令集,指令格式,定址模式,組合語言
機器無關
- 設計邏輯/算法策略
- Two Pass Assembler: 對程式進行兩次處理,允許向前參考的功能
其他參考
System Program