彙編器:彙編語言 –>機器語言
連接器:把彙編器創建的多個單獨文件連接成可執行程序
彙編語言和機器語言一一對應
1.數位進制
二進制
左高右低。整數存儲
字節Byte:8位
字word:2字節,2Byte。16位
雙字doubleword:4字節。32位
八字節:8字節。64位補碼
一個數的補碼就是它的相反數(一個數與它的補碼相加和爲0),
求補碼:取反加一- 字符存儲
ASCII, 用低7位,最高位創建私有字符
ANSI字符集,256字符,後128特殊字符
Unicode標準,:UTF-8, UTF-16, UTF-32
ASCII字符串
2.處理器
1. IA-32:始於80386
2. 微機結構:
clock:時鐘用於CPU的內部操作和其他系統部件的同步
Cu:控制單元協調執行機器指令時各個步驟的次序
ALU:算術邏輯單元執行算術運算和邏輯運算
mem stor unit:內存存儲單元存放指令和數據
總線:傳送數據,並行線
數據總線:CPU內存間傳送指令和數據
控制總線:用二進制信號同步連接到系統總線上的所有設備的動作
地址總線:如果當前指令要在CPU和內存間傳送數據,地址總線上保持着指令和數據的地址
時鐘:固定廢品率產生脈衝,一個完整時間脈衝(兩個下降沿間間隔)所需要的時間是 機器週期 (機器指令使用的最基本的時間單位
3. 指令週期
單條機器指令的執行可以被分解爲一系列的獨立操作,這些操作構成指令執行的一個週期
程序開始執行前必須首先裝入 內存,指令指針 包含要執行的下一條指令的地址, 指令隊列 存放若干條將要執行的指令,
三個步驟:
1.取指,控制單元從 指令隊列 中取得指令並遞增指令指針(EIP)的值,指令指針也稱爲程序計數器
2.解碼,控制單元對指令解碼,把輸入操作數傳遞給ALU,並向算術邏輯單元發送信號指明要執行的操作
*取操作數(額外步驟),控制單元從內存中讀操作數,複製到內部寄存器中
3.執行,算術邏輯單元執行指令,送出運算輸出結果,更新反應處理器狀態的狀態標誌
*存儲輸出操作數(額外),存儲數據到內存中。
4. 流水線
指令執行 每一步 佔用 一個 時鐘週期, 但處理器可以並行執行其他步驟。
Intel 486 6級流水線:
- 總線接口單元BIU:訪問存儲器提供輸入輸出
- 代碼預取單元:從BIU接收機器指令並將其插入稱爲指令隊列的存儲區域
- 指令解碼單元:對預取隊列中的機器指令進行解碼,將他們翻譯爲微代碼
- 執行單元:執行指令解碼單元產生的微代碼
- 分段部件:把邏輯地址轉換爲線性地址並進行保護檢查
- 分頁部件:把線性地址轉換爲物理地址,進行頁保護檢查
n*k模型:
k+(n-1)模型:
k + n 模型:超標量流水線
5. 內存讀取
步驟由cpu內部時鐘控制
週期1:內存操作數的地址被放到地址總線ADDR上
週期2:讀取線(RD)設爲低(0),通知存儲器要讀取一個值
週期3:cpu等待一個週期,給存儲器時間響應。這個時鐘週期內,內存控制器把數據放在數據線
(DATA) 上。
週期4:讀取線(RD)變爲一,通知cpu在數據總線(DATA)上讀取數據
3.IA-32體系結構
1. 操作模式
- 保護模式
程序被賦予了獨立的內存區域(稱爲段),處理器阻止程序訪問分配段之外的其他內存 - 虛擬8086模式
(保護模式的特例)在保護模式下,執行多個虛擬8086任務,即在 安全的多任務環境下運行實地址模式的軟件 ,即使一個如 MS-DOS 程序崩潰或試圖向系統內存寫入數據,也不會影響同時運行的其他程序 - 實地址模式
實地址模式實現了 Intel 8086 處理器的程序設計環境,可用於運行那些需要直接訪問系統內存和硬件設備的MS-DOS 程序。* 實地址模式下運行的程序可能導致操縱系統掛起 * - 系統管理模式
2. 基本執行環境
1. 地址空間
保護模式下,IA-32最高可訪問4GB內存,32位無符號整數尋址上限。(32-bit address)
實地址程序只能訪問1MB內存(20-bit address)
保護模式下虛擬8086模式運行多個程序,每個程序都能訪問獨立 1MB內存區域(20-bit address)
2. 寄存器
還有更多的寄存器之後會學習到
3. 歷史
- Intel 8086:16位寄存器16位數據總線 1MB內存
- Intel 8088 :8位數據總線,其餘同上
- Intel 80286: 24位地址,16MB內存
IA-32系列:
- Intel 386 : 32位寄存器,32位地址總線,32位外部數據通道, 每個程序4GB線性地址空間
- Intel 486:流水線技術,同時處理多條指令
奔騰:32位地址,64位內部數據通道
奔騰4,Xeon
4. CISC RISC
CISC:
高級運算,微代碼解釋器,複雜指令
RISC:
精簡指令,少,硬件直接解碼執行
4.IA-32內存管理
- 實模式
20位地址線,訪問1MB內存,
如何用8086的16位寄存器存放20位的地址
分段內存方案:
所有內存被分爲多個64kb區域,這些區域稱爲段
所以,實際地址等於 16位段的基地址加上16位的偏移地址
注意:每個段在被表示時省略了最後一個0,C000實際上是從C0000開始的段
如:80250h = 8000:0250
08F1:0100 = 08F1h * 10h + 0100h = 09010h
- 保護模式
每個程序可尋址4GB內存,0~FFFFFFFF
平坦分段模式
基址,界限,段描述符,全局描述符表GDT, 0040*1000=00040000
10000*1000=10000000
多段模式
局部描述符表LDT,基址,界限計算同上
分頁 (IA-32)
段分割爲多頁,
一頁:4096字節
分頁機制允許同時運行的程序使用的總內存 遠大於計算機的物理內存,
所有頁的集合合稱虛擬內存
分頁機制(使用後備磁盤存儲)
一個程序越依賴分頁機制,運行也可能越慢
補:
1.EFLAGS擴展標誌,
2.FPU浮點單元:高速浮點算數運算
3.視頻適配器:視頻控制器+視頻顯示存儲器(顯存)
4.存儲器: