第1章 背景
內容 第1.1 節將說明系統軟體和本書的整體架構。 第1.2 節開始探討系統軟體和本書所使用的機器架構之間的關係。 第1.3 節將描述具備基本軟體概念的「簡化指令電腦」( Simplified Instructional Computer,SIC)。
1.1 簡介 本節主要是介紹系統軟體(system software)的設計和實作概念。 系統軟體是由許多支援電腦運作的程式所組成的,此項軟體可以讓使用者只需關注應用程式或問題的解決方案,而不必知道電腦內部的運作細節。
組合語言 程式設計師利用組合語言(assembler language)撰寫程式,並且使用巨集指令(macro instructions)來讀取或寫入資料, 或是執行其他的高階功能。 然後, 使用具備巨集處理器(macro processor)的組譯器(assembler),將這些程式轉換成機器語言。 轉換後的機器碼,可藉由載入器或連結器將之置入系統(機器)中準備執行,並可以使用除錯器來偵測程式的錯誤。
本書的主題 組譯器 載入器 連結器 巨集處理器 編譯器 作業系統 資料庫管理系統 文字編輯器以及互動式除錯系統
1.2 系統軟體與機器架構 系統軟體和應用軟體最大的不同,就是與機器的相關性。 系統程式是為了要支援電腦本身的運作及使用,而不是為了支援特定的應用。 系統程式通常與其執行機器的架構有密切的關係: 組譯器, 編譯器,作業系統。 然而某些系統軟體所提供的特色(功能)並非與其所支援電腦系統的架構(類型)有直接關係。例如,組譯器的一般設計和邏輯。
簡化指令電腦(SIC) SIC 是一種假想的電腦,其設計包括了大部分真實機器中常見的特性,而避免掉一些不常見的獨特性質。
主要的章節 1. 在任何此類系統軟體中,都能找到的基本功能。 2. 與機器架構有緊密關係的特性。 3. 其他常見而且與機器架構無關的特性。 4. 設計此系統軟體架構上選擇上的考量。例如,單階段(single-pass)或是多階段(multi-pass)處理。 5. 真實機器上的實施範例,著重於較特殊的軟體特性,以及與機器相關的特性。
1.3 簡化指令電腦(SIC) 可以代表大多數硬體所具備的特性和概念,而且可以避免真實機器上大部份的特殊性質。 二種不同的版本:標準版本和延伸(XE) 版本。 SIC具備了向上相容性(upward compatible) 在標準版本電腦上可被執行的目的程式也一定能在延伸版本電腦上正確地執行。
1.3.1 SIC 機器架構 記憶體 記憶體是由長度為八個位元的位元組(bytes)所組成;連續三個位元組形成一個字組(word,24 個位元) 。 所有的位址都是位元組位址(byte address);字組的位址是以最低位之位元組的位址來表示。 電腦記的憶體共有32,768(215)個位元組。
1.3.1 SIC 機器架構 暫存器
1.3.1 SIC 機器架構 資料格式 整數是以24 位元的二進制值來表示;並以二的補數來表示其負數。 字元是以8 位元的ASCII 碼來表示(參考附錄B)。 在標準版的SIC 中,沒有浮點運算的硬體。
1.3.1 SIC 機器架構 指令格式
1.3.1 SIC 機器架構 定址模式
1.3.1 SIC 機器架構 指令集 載入和儲存暫存器(LDA、LDX、STA、STX等) 整數算數運算指令(ADD、SUB、MUL、DIV) COMP指令是比較暫存器A和記憶體中字組的值 條件跳躍指令(JLT、JEQ、JGT) JSUB跳到副程式 RSUB則是跳到暫存器L中所儲存的位址
1.3.1 SIC 機器架構 輸入和輸出 在標準SIC版本中,一次輸入和輸出一個位元組(暫存器A最右邊的八個位元)。 每個裝置都具有一組八位元的裝置碼。 SIC系統共有三個I/O指令 裝置測試(Test Device, TD) 讀取資料(Read Data, RD) 或寫入資料(Write Data, WD)
1.3.2 SIC/XE機器架構 記憶體 額外暫存器 最大可用記憶體為1 M位元組(220位元組)。 助記符號 編號 特定用途 B 3 基底暫存器;用於定址 S 4 一般工作暫存器 ― 沒有特定用 途 T 5 一般工作暫存器 ― 無特定用途 F 6 浮點累加器(48個位元)
1.3.2 SIC/XE機器架構 資料格式
1.3.2 SIC/XE機器架構 指令格式
1.3.2 SIC/XE機器架構 定址模式
1.3.2 SIC/XE機器架構
1.3.2 SIC/XE機器架構 指令集 針對新的暫存器(LDB、STB 等等)進行存取資料,以及執行浮點算數運算(ADDF、SUBF、MULF、DIVF)。 一些暫存器對暫存器的算數運算(ADDR、SUBR、MULR、D1VR)。 「監督呼叫指令」(supervisor call, SVC)。
1.3.2 SIC/XE機器架構 輸出和輸入 SIC中的I/O指令,同樣適用於SIC/XE中。 當CPU正在執行其他指令時,還可以用一些I/O通道(I/O channels)繼續執行輸入和輸出的動作。 SIO、TIO和HIO指令可以用來啟始、測試和暫停I/O通道的運作。
1.3.3 SIC程式設計範例
1.3.3 SIC程式設計範例
1.3.3 SIC程式設計範例
1.3.3 SIC程式設計範例 圖 1.4 迴圈和索引運算範例
1.3.3 SIC程式設計範例 圖 1.4 迴圈和索引運算範例
1.3.3 SIC程式設計範例
1.3.3 SIC程式設計範例
1.3.3 SIC程式設計範例
1.3.3 SIC程式設計範例
1.3.3 SIC程式設計範例