## 1.1 該手冊的組織結構
該書從5個方面闡述了80386的體系結構:
```
第I部分 - 應用程序
第II部分 - 系統編程
第III部分 - 兼容性
第IV部分 - 指令集
附錄
```
上面的分類一方面取決于體系結構本身,一方面取決于使用這本書的不同方式。入下表所示,后面的2部分旨在作為參考手冊來幫組那些致力于在80386上開發軟件的程序員。前面的3部分則是理論說明,它們說明體系結構的用途,解釋術語和概念,描述那些或與專屬用途相關,或與專屬體系結構相關的指令。
```
解釋說明
第I部分 - 應用程序
第II部分 - 系統編程
第III部分 - 兼容性
參考
第IV部分 - 指令集
附錄
```
前面的3部分陳述了80386 CPU的執行模式和保護特性。應用特性和系統特性的區別由80386的保護機制決定。保護機制的主要用意在于是操作系統免于應用的干擾;因此,處理器使得一些寄存器和和指令不能被應用程序訪問。第I部分討論的是可以被應用訪問的特性;第II部分討論的特性只能由授權的系統軟件或在非保護模式下訪問。
80386的處理模式同樣控制著可訪問的特性。80386有3種處理模式:
1.保護模式。
2.實地址模式。
3.虛擬8086模式。
保護模式是80386處理器的正常的32位環境。在這種模式下,所有的指令和特性均可使用。
上電后處理器即進入實地址模式(經常簡稱為“實模式”)。實地址模式下,80386看起來像是一個更快速的,增加了一些新指令的8086。大多數80386軟件在實地址模式下只是進行一些初始化操作。
虛擬8086模式(也常被稱作“V86模式”)是一種動態模式,在這種意思上說,處理器可以頻繁,快速的在V86模式和保護模式之間切換。CPU從保護模式進入V86模式去執行8086程序,然后再離開V86模式,進入保護模式繼續執行原來的80386程序。
在保護模式下可使用的任何特性在V86模式下對于所有程序來說是一樣的。這些特性構成了第I部分。在保護模式下系統軟件可以使用的其他一些特性組成了第II部分。第III部分闡述了實地址模式和V86模式,也包括如何執行一個32位和16位的混合程序。
所有模式下可使用 第I部分-應用程序
只能在保護模式下使用 第II部分-系統編程
兼容模式 第III部分-兼容性
### 1.1.1 第I部分-應用編程
這部分呈現的是通常被應用程序員使用的特性。
第2章-基本編程模型:介紹了存儲器的組織結構模型。定義數據類型。列舉應用程序使用的寄存器集合。介紹堆棧。說明字符串操作。定義指令的組成。解釋了地址計算。介紹應用程序可能用到的阿中斷和異常。
第3章-應用指令集:縱覽應用程序經常使用的指令。將指令按照功能分組;例如,字符串指令被分在一組,控制-傳輸指令被分在另一組。解釋指令的概念。關于單個指令的詳細介紹被放到了第IV部分,指令集參考。
### 1.1.2 第II部分-系統編程
這部分闡述的特性通常被下面的人使用:寫操作系統,設備驅動,調試器以及為80386保護模式下應用程序提供支持的其他軟件的人。
第4章-系統架構:縱覽系統程序員使用的各項特性。介紹在第I部分沒有提及的寄存器和數據結構。介紹面向系統的指令以及它們支持的寄存器和數據結構上下文。指出在在哪些章節可以找到寄存器,數據結構以及指令的詳細信息。
第5章-內存管理:闡述了支持虛擬存儲器的數據結構,寄存器以及指令的詳細結構,以及段和頁的概念。解釋了設計者怎樣選擇存儲器的組織模型,從完全線性(“平坦模式”)到使用頁和段。
第6章-保護:展開存儲器管理特性,包括它應用與斷和頁時的保護。說明了特權等級,堆棧切換,指針檢查以及用戶和超級用戶模式的實現。多任務的保護被推遲到后面的章節。
第7章-多任務:闡述了硬件如何通過上下文切換和任務間保護來支持多任務。
第8章-輸入/輸出:揭示I/O特性,包括I/O指令,I/O的保護,以及I/O許可映射。
第9章-異常和中斷:解釋了80386中斷的基本運行機制。中斷和異常怎樣和保護相聯系。討論了所有可能的異常,列舉了觸發條件和需要處理的信息,以及異常的恢復。
第10章-初始化:定義了處理器在復位或上電后的狀態。說明了為實地址模式和保護模式設置寄存器,標志位以及數據結構。包含一個初始化示例。
第11章-協處理和多處理:解釋了支持數字協處理器和共享存儲器的多CPU的指令。
第12章-調試:告訴我們怎樣使用調試寄存器。
### 1.1.3 第III部分-兼容性
本書的其他章節基本上把處理器看作是32位機器,為了簡單而省略了16操作部件。確實,80386是32位機器,但是它的設計完全支持16位的操作數和尋址。這部分通過對在32位程序中支持16位程序和16位操作數的說明完整的描述了80386的結構特性。所有的3種模式均可執行16位程序:保護模式可以直接執行80286保護模式下的16位程序,實地址模式執行8086程序和80286實地址模式程序,虛擬8086模式在多任務環境下和其他80386保護模式程序一起執行8086程序。另外,32位和16位模塊可以在保護模式下與32位和16位操作混合使用。
第13章-執行80286保護模式代碼:在保護模式下,80386完全可以執行80286保護模式代碼,因為80286是80386的子集。
第14章-80386實地址模式:說明80386的實地址模式。在這種模式下,80386看起來更像是一個快速的實地址模式下的80286,或增加了新指令的快速8086。
第15章-虛擬8086模式:80386能夠快速的在保護模式和虛擬8086模式之間切換。這使其有能力在32位“本地模式”程序之間執行8086的多道程序。
第16章-混合16位和32位編碼:即使在同一個程序或任務內,80386也能夠混合16位和32位編碼。而且,任何給定的模塊可以同時使用16位和32位操作數和地址。
### 1.1.4 第IV部分-指令集
第I,II,III部分給出了指令和體系結構特定細節相關的總體描述,這部分用字母序列出了指令集,為匯編程序員,編寫調試器,編譯器,操作系統的人等提供了具體細節。指令介紹包括操作的邏輯描述,對標志位的影響,設置標志位的影響,操作數或地址長度屬性的影響,處理器模式的影響以及可能產生的異常。
### 1.1.5 附錄
附錄給出了編碼表和其他細節,它們被組織成了可以被匯編程序員和系統程序員快速索引的形式。
- 第一章 80386介紹
- 1.1 該手冊的組織結構
- 1.2 其他文獻
- 第二章 編程基本模型
- 2.1 存儲器組織和段
- 2.2 數據類型
- 2.3 寄存器
- 2.4 指令格式
- 2.5 操作數選擇
- 2.6 中斷和異常
- 第4章 系統寄存器
- 4.1 系統寄存器 (System Registers)
- 4.2 系統指令 (System Instructions)
- 第五章 內存管理
- 5.1 分段地址轉換(Segment Translation)
- 5.2 分頁地址轉換(Page Translation)
- 5.3 混合分段和分頁地址轉換(Combining Segment and Page Translation)
- 第六章 內存管理
- 6.1 為什么要保護(Why Protection?)
- 6.2 80386保護機制概述(Overview of 80386 Protection Mechnaisms)
- 6.3 段級保護(Segment-Level Protection)
- 6.4 頁級保護(Page-Level Protection)
- 6.5 混合分頁和分段保護(Combining Page and Segment Protection)
- 第7章 多任務(Multitasking)
- 8.1 I/O 尋址(I/O Addressing)
- 7.1 任務狀態段(Task State Segment)
- 7.3 任務寄存器(Task Register)
- 7.4 任務門描述符(Task Gate Descriptor)
- 7.5 任務切換(Task Switching)
- 7.6 任務鏈(Task Linking)
- 7.7 任務尋址空間(Task Address Space)
- 第8章 輸入 輸出
- 8.2 I/O 指令(I/O Instructions)
- 8.3 保護和I/O(Protection and I/O)
- 第9章 異常和中斷(Exceptions and Interrupts)
- 9.1 識別中斷(Identifying Interrupts)
- 9.2 允許和禁止中斷(Enabling and Disabling Interrupts)
- 9.3 同時發生的中斷和異常的優先級(Priority Among Simultaneous Interrupts and Exceptions)
- 9.4 中斷描述符表(Interrupt Descriptor Table)
- 9.5 IDT 描述符(IDT Descriptors)
- 9.6 中斷任務和中斷子程序(Interrupt Tasks and Interrupt Procedures)
- 9.7 出錯碼(Error Code)
- 9.8 異常條件(Exception Conditions)
- 9.9 異常總結(Exception Summary)
- 9.10 出錯碼總結(Error Code Summary)
- 第10章 初始化(Initialization)
- 10.1 復位后處理器狀態(Processor State After Reset)
- 10.2 實模式初始化(Software Initialization for Real-Address Mode)
- 10.3 切換到保護模式(Switching to Protected Mode)
- 10.4 保護模式初始化(Software Initialization for Protected Mode)
- 10.5 初始化示例
- 10.6 TLB測試
- 第十四章 80386實地址模式
- 14.1 物理地址構成
- 14.2 寄存器和指令
- 14.3 中斷和異常處理
- 14.4 進入和離開實地址模式
- 14.6 實地址模式異常
- 14.7 與8086的不同
- 14.8 與80286實地址模式的不同