32位彙編第一章總結(6.20-6.21)ios
簡史主要是介紹了windows和intel的發展歷史和windows與intel之間相輔相成的發展過程。windows
2.1 80x86下的工做模式有哪些,有何異同?ide
包括實模式、保護模式、虛擬86模式 1.實模式與8086處理器的異同:
相同: a.相同的尋址方式 b.相同的中斷方式 實模式相對8086處理器的改進: a.多了FS,GS兩個段寄存器 b.可以使用32位寄存器 c.新增一些指令,加速操做 2.實模式與保護模式的異同
保護模式相對實模式的改進: a.更大的(4G)尋址空間 b.支持內存分頁機制 c.支持優先級 3.虛擬86模式是實模式與保護模式的混合,存在的意義是爲了兼容8086的程序。 a.使用與8086相同的尋址方式(20位) b.支持多任務和分頁機制
2.2 80x86下的工做模式之間是如何切換的?spa
1.實模式和虛擬86模式之間沒法進行切換。
2.當計算機啓動後,首先進入實模式,而後從實模式中切換到保護模式,在保護模式中能夠啓動一個虛擬86模式的進程。
3.1 windows下各個工做模式的尋址方式?code
1.實模式和虛擬86模式的尋址模式與8086處理器的尋址方式相同,使用20位尋址最多能夠尋址1M。使用xxxx:yyyy的方式表示物理地址,xxxx存於段寄存器中,爲基地址,yyyy爲索引值或者偏移量。 物理地址的轉換方式爲 xxxx*10h+yyyy。 2.保護模式下有32位的尋址空間,能夠尋址4G,使用xxxx:yyyyyyyy的方式表示線性地址,xxxx存放於16位的段寄存器中,用於查找基地址,yyyyyyyy爲索引值或者偏移量 保護模式下的線性地址轉換要複雜一些大體分爲兩步: a.從段段寄存器xxxx中獲取段描述符 從段寄存器中獲取xxxx,段寄存器的0,1位存放的是當前段的優先級,第3位存放的是從哪裏獲取基地址,0表示從GDTR中獲取,1表示從LDTR中獲取。 當從GDTR中獲取時,從GDTR中直接能夠獲取到GDT的基址,在根據段寄存器餘下的13位做爲索引值能夠獲得該段的段描述符。 當從LDTR中獲取時,先從GDTR中獲取到GDTR的基址,再從LDTR中獲取到LDT的索引值,從而獲得LDT的基址,再根據段寄存器餘下的13位做爲索引值能夠獲得該段的段描述。 b.根據段描述符中的段基址和索引值yyyyyyyy獲取到線性地址
3.2 windoes下的分頁機制是如何使用的?blog
80386處理器是32位處理器,尋址空間是4G,同時是多任務的,每一個任務都有獨立的4G的連續的線性尋址空間。
windows將內存以4k大小爲一頁將物理內存劃分紅n個頁塊,一樣windows會對每一個任務的各個段也以4k大小劃分紅n個塊,任務的頁塊與物理地址的頁塊之間有一個映射關係,這個映射是經過查找頁目錄和頁表實現的。至關於每一個任務都會有一個頁表,頁表中記錄了線性地址與物理地址之間的關係,經過尋址找到線性地址後查找頁表便可找到物理地址。
將每一個任務經過頁表的方式隔離,即爲windows的分頁機制。
4.1 win32系統爲何找不到中斷指令?索引
win32系統是多任務系統,若是任一任務均可以操做中斷程序,很容易引發系統的崩潰,因此win32系統提供了優先級和保護機制來避免任務越權執行有危險的操做。而在8086中的中斷指令由win32系統實現,並經過動態連接庫的形式由每一個任務調用。
4.2 中斷、異常、自陷有什麼區別?進程
1.中斷指的是程序被動停下來響應高優先級的代碼再返回執行的過程。 2.異常指的是程序遇到了不可忽略的錯誤時,處理器用與遇到中斷一樣的處理方法處理異常。 3.自陷指的是程序主動停下來響應高優先級的代碼再返回執行的過程。
4.3 8086下或80386實模式下是如何處理中斷和異常的?內存
8086經過int n的方式調用中斷,中斷向量表存在0:0000h到0:0400h之間,每一箇中斷包含4個字節,指向中斷程序的地址。
當引起int n中斷的時候,從4*n處取到中斷程序的地址,程序跳轉到中斷程序處執行,執行完後經過ret返回到原程序中斷位置繼續執行
4.4 80386處理中斷的流程?內存管理
80386保護模式下引起中斷n後,從IDTR中獲取中斷描述符表基址,經過索引值n*8取出中斷n的中斷描述符,從中斷描述符中獲取中斷程序的地址xxxx:yyyyyyyy,通過線性轉換後獲得物理地址而後執行中斷程序。還行完成後返回到原程序繼續執行。
4.5 windows是怎樣作的保護異常?
要搞懂這塊須要作下課外工做,未完待續
第一章術語總結:
GDT,LDT GDTR:48位,全局段描述符寄存器,可獲取全局段描述符表的地址 LDTR:16位,局部段描述符寄存器,可獲取局部段描述符表在GDTR中的偏移量 TRx CRx RPL IDT:中斷描述符表 IDTR:48位,中斷描述符寄存器,前32位爲IDT在內存中的基址,後16位標識IDT的長度 DPL: RPL: cli sti eflags IOPL Alaph計算機 TSR程序:(Terminate-and-stay-resident)終止駐留程序,執行後進入內存,但什麼都不作,在後臺運行,經過熱鍵的方式激活後,程序調出,運行後返回到其餘程序。 大可能是dos下的好比:bios、顯卡驅動、鼠標驅動、輸入法、高端內存分配等。