80386這種機器是intel32位cpu,上個世紀90年代普遍使用
只有16位定址空間,沒有保護機制
為了相容x86 16位機器(例如dos),80386加電啟動後處於實模式執行狀態,在這種狀態下軟體可訪問物理記憶體空間不能超過1mb,且無法發揮intel80386以上級別的32位cpu的4gb記憶體管理能力
有32位定址空間,有保護機制
支援記憶體分頁機制,提供了對虛擬記憶體的良好支援。保護模式下80386支援多工,還支援優先順序機制,不同的程式可以執行在不同的優先順序上。優先順序一共分為0~3 4個級別,作業系統執行在最高優先順序0上,應用程式則執行在比較低的優先順序上;配合良好的檢查機制後,既可以在任務間實現資料的安全共享也可以很好地隔離各個任務
位址是訪問記憶體空間的索引
80380是32位的處理器,即可以定址物理記憶體為2^32=4g位元組
物理記憶體位址空間是處理器提交到匯流排上用於訪問計算機系統中的記憶體和外設的最終位址。乙個計算機系統中只有乙個實體地址空間。
線性位址空間(通過頁模式和段模式來實現)是在作業系統的虛存管理之下每個執行的應用程式能訪問的位址空間。每個執行的應用程式都認為自己獨享整的計算機系統的位址空間,這樣可讓多個執行的應用程式之間相互隔離。
邏輯位址空間是應用程式直接使用的位址空間
箭頭表示對映關係
80386的暫存器可以分為8組:
通用暫存器
eax:累加器
ebc:基址暫存器
ecx:計數器
edx:資料暫存器
esi:源位址指標暫存器
edi:目的位址指標暫存器
ebp:基址指標暫存器
esp:堆疊指標暫存器
段暫存器
cs:**段(實模式與保護模式裡面的值代表的含義不一樣)
ds:資料段
es:附加資料段
ss:堆疊段
fs:附加段
gs:附加段
標誌暫存器(eflages)
if(interrupt flag):中斷允許標誌位,由cli,stl兩條指令來控制;設定if使cpu可識別外部(可遮蔽)中斷請求。復位if則禁止中斷。if對不可遮蔽外部中斷和故障中斷的識別沒有任何作用
cf,pf,zf,。。。
控制暫存器
系統位址暫存器,除錯暫存器,測試暫存器
關於x86 32硬體
80386這種機器是intel32位cpu,上個世紀90年代普遍使用 只有16位定址空間,沒有保護機制 為了相容x86 16位機器 例如dos 80386加電啟動後處於實模式執行狀態,在這種狀態下軟體可訪問物理記憶體空間不能超過1mb,且無法發揮intel80386以上級別的32位cpu的4gb記憶...
x86 32組合語言基礎彙總
從c 生成彙編 gcc o2 s code.c m32 fno omit frame pointer 編譯.s檔案為.o檔案 as o code.o code.s 32 使用gdb除錯則加 gstabs 鏈結.o檔案生成可執行檔案 ld o exe code1.o code2.o m elf i38...
linux核心 x86 32位核心啟動流程
arch x86 boot header.s 執行 start,第274行 global start start 然後跳轉執行start of setup,準備實模式建立堆疊,bss段清0,為下步c語言執行建立環境。start of setup 然後跳轉到c 執行main jump to c cod...