32位彙編學習札記(一)

32位彙編第一章總結(6.20-6.21)ios

 

1 簡史

簡史主要是介紹了windows和intel的發展歷史和windows與intel之間相輔相成的發展過程。windows

2 80x86的工做模式

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 windows的內存管理

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 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、顯卡驅動、鼠標驅動、輸入法、高端內存分配等。
相關文章
相關標籤/搜索