![IA-32結(jié)構(gòu)微處理器課件_第1頁](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g469.jpg)
![IA-32結(jié)構(gòu)微處理器課件_第2頁](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g4692.jpg)
![IA-32結(jié)構(gòu)微處理器課件_第3頁](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g4693.jpg)
![IA-32結(jié)構(gòu)微處理器課件_第4頁](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g4694.jpg)
![IA-32結(jié)構(gòu)微處理器課件_第5頁](http://file4.renrendoc.com/view12/M0B/28/2A/wKhkGWeQ246AXCz-AABWycXz81g4695.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
IA-32結(jié)構(gòu)微處理器2.1IA-32微處理器的概要?dú)v史
1971年Intel400470年代中期Intel8080、808580年代初Intel8086、8088
從8086(8088)到80286、80386、80486、奔騰(也稱為80586)、奔騰MMX、奔騰PRO(也稱為80686)、奔騰Ⅱ、奔騰Ⅲ,直至最新的奔騰4,形成了IA(IntelArchitecture)-32結(jié)構(gòu)。2.1.1Intel8086微處理器
從歷史的觀點(diǎn)看,IA-32結(jié)構(gòu)微處理器同時包括16位微處理器和32位微處理器。目前,對於許多操作系統(tǒng)和十分廣泛的應(yīng)用程式,32位IA-32結(jié)構(gòu)是最流行的電腦結(jié)構(gòu)。
IA-32結(jié)構(gòu)的最重要的成就之一,是在從1978年開始的那些處理器上建立的目標(biāo)程式仍然能夠在IA-32結(jié)構(gòu)系列的最新的處理器上執(zhí)行。Intel8086微處理器有16位寄存器和16位外部數(shù)據(jù)匯流排,具有20位地址匯流排,尋址1MB地址空間。
8086引進(jìn)段到IA-32結(jié)構(gòu)。關(guān)於段,有16位的段寄存器,它包含最大為64KB的記憶體段的指針。一次用四個段寄存器,8086/8088微處理器能尋址256KB而不需要在段之間切換。用段寄存器指針和附加的16位指針能形成20位地址提供總共是1MB的地址範(fàn)圍。2.1.2Intel80386微處理器Intel80386微處理器是在IA-32結(jié)構(gòu)微處理器系列中的第一個32位處理器。它在結(jié)構(gòu)中引入了32位寄存器用於容納運(yùn)算元和地址。每個32位寄存器的後一半保留兩個早期處理器版本(Intel8086和80286)的16位寄存器的特性,以提供完全的後向相容。提供了一種新的虛擬8086方式,以在新的32位處理器上最有效地執(zhí)行為8086和8088微處理器建立的程式。Intel80386微處理器有32位地址匯流排並能支持多至4GB的物理記憶體。32位結(jié)構(gòu)為每個軟體進(jìn)程提供邏輯地址空間。32位結(jié)構(gòu)同時支持分段的存儲模式和“平面(flat)”存儲模式。在“平面”存儲模式,段寄存器指向相同地址,而且每個段中的所有4GB可尋址空間對於軟體程式員是可以訪問的。Intel80386微處理器把分頁引進(jìn)了IA-32結(jié)構(gòu),用4KB固定尺寸的頁提供一種虛擬存儲管理方法,它比分段更為優(yōu)越。分頁對於操作系統(tǒng)更為有效,且對應(yīng)用程式完全透明,對執(zhí)行速度沒有明顯影響。4GB虛擬地址空間的支持能力、存儲保護(hù)與分頁支持一起,允許IA-32結(jié)構(gòu)成為高級操作系統(tǒng)和應(yīng)用程式的最流行的選擇。2.1.3Intel80486微處理器
Intel80486微處理器由把Intel80386微處理器的指令解碼和執(zhí)行單元擴(kuò)展為五個流水線段,增加了更多的並行執(zhí)行能力,其中每個段(當(dāng)需要時)與其他的並行操作最多可在不同段上同時執(zhí)行五條指令。每個段以能在一個時鐘週期內(nèi)執(zhí)行一條指令的方式工作,所以Intel80486微處理器能每個時鐘週期執(zhí)行一條指令。
在晶片上增加了一個8KB的一級緩存(Cache)大大增加了每個時鐘執(zhí)行一條指令的百分比,包括運(yùn)算元在一級Cache中的記憶體訪問指令。Intel80486微處理器也是第一次把80x87FPU(浮點(diǎn)處理單元)集成到處理器上並增加了新的引腳、位和指令以支持更複雜和更強(qiáng)有力的系統(tǒng)(二級Cache支持和多處理器支持)。2.1.4Intel奔騰(Pentium)處理器Intel奔騰(Pentium)處理器增加了第二個執(zhí)行流水線以達(dá)到超標(biāo)量性能(兩個已知的流水線u和v一起工作,實(shí)現(xiàn)每個時鐘執(zhí)行兩條指令)。片上的一級Cache也加倍了,8KB用於代碼,另外8KB用於數(shù)據(jù)。數(shù)據(jù)Cache使用MESI協(xié)議以支持更有效的回寫方式,以及由Intel80486處理器使用的寫通方式。加入的分支預(yù)測和片上的分支表增加了迴圈結(jié)構(gòu)中的性能。
奔騰系列的最後一個處理器(具有MMX技術(shù)的奔騰處理器)把IntelMMX技術(shù)引入IA-32結(jié)構(gòu)。IntelMMX技術(shù)用單指令多數(shù)據(jù)(SIMD)執(zhí)行方式,在包含在64位MMX寄存器中組合的整型數(shù)據(jù)上執(zhí)行並行計算。此技術(shù)在高級媒體、影像處理和數(shù)據(jù)壓縮應(yīng)用程式上極大地增強(qiáng)了IA-32處理器的性能。2.1.5IntelP6系列處理器1995年,Intel公司引入了P6系列處理器。此系列處理器是基於新的超標(biāo)量微結(jié)構(gòu)上的,它建立了新的性能標(biāo)準(zhǔn)。
IntelPentiumPro處理器是基於P6微結(jié)構(gòu)的第一個處理器。P6處理器系統(tǒng)隨後的成員是IntelPentiumⅡ、IntelPentiumⅡXeon(至強(qiáng))、IntelCeleron(賽揚(yáng))、IntelPentiumⅢ和IntelPentiumⅢXeon(至強(qiáng))處理器。2.1.6Intel奔騰Ⅱ處理器IntelPentiumⅡ處理器把MMX技術(shù)加至P6系列處理器具有新的包裝和若干硬體增強(qiáng)。第一級數(shù)據(jù)和指令Caches每個擴(kuò)展至16KB,支持256KB、512KB和1MB二級Cache。2.1.7Intel奔騰Ⅲ處理器PentiumⅢ處理器引進(jìn)流SIMD擴(kuò)展(SSE)至IA-32結(jié)構(gòu)。SSE擴(kuò)展把由IntelMMX引進(jìn)的SIMD執(zhí)行模式,擴(kuò)展為新的128位寄存器和能在組合的單精確度浮點(diǎn)數(shù)上執(zhí)行SIMD(單指令多數(shù)據(jù))操作。
2.1.8Intel奔騰4處理器IntelPentium4處理器是最新的IA-32結(jié)構(gòu)微處理器,也是第一個基於IntelNetBurst
微結(jié)構(gòu)的處理器。IntelNetBurst微結(jié)構(gòu)是新的32位微結(jié)構(gòu),它允許處理器操作在時鐘速度和性能比以前的IA-32結(jié)構(gòu)微處理器更高。2.2IA-32微處理器的功能結(jié)構(gòu)IA-32結(jié)構(gòu)微處理器基本上按照摩爾定律發(fā)展,已經(jīng)經(jīng)歷許多代。但從使用者(包括程式員)的角度來看,最關(guān)心的是處理器的功能結(jié)構(gòu)。即,呈現(xiàn)在程式員面前的功能和編程結(jié)構(gòu)。2.2.1Intel8086微處理器的功能結(jié)構(gòu)Intel8086微處理器的功能結(jié)構(gòu)如圖2-1所示。
8086(8088)CPU從功能上來說分成兩大部分:匯流排介面單元BIU(BusInterfaceUnit)和執(zhí)行單元EU(ExecutionUnit)。
BIU負(fù)責(zé)與記憶體介面,即8086CPU與記憶體之間的資訊傳送,都是由BIU進(jìn)行的。
BIU負(fù)責(zé)從記憶體的指定部分取出指令,送至指令流佇列中排隊,在執(zhí)行指令時所需要的運(yùn)算元,也由BIU從記憶體的指定區(qū)域取出,傳送給EU部分去執(zhí)行。
EU部分負(fù)責(zé)指令的執(zhí)行。這樣,取指部分與執(zhí)行指令部分是分開的,於是在一條指令的執(zhí)行過程中,就可以取出下一條(或多條)指令,在指令流佇列中排隊。在一條指令執(zhí)行完以後就可以立即執(zhí)行下一條指令,減少了CPU為取指令而等待的時間,提高了CPU的利用率,提高了整個運(yùn)行速度。2.2.2Intel80386微處理器的功能結(jié)構(gòu)Intel80386微處理器的功能結(jié)構(gòu)如圖2-4所示。Intel80386微處理器擁有32位數(shù)據(jù)線和32位地址線,可以尋址4GB(232)的物理地址空間,內(nèi)部寄存器與數(shù)據(jù)線都是32位,但段寄存器仍為16位。80386處理器首次將32位的寄存器組引入80x86體系的微處理器中,它們都能夠用於計算和尋址操作。每個32位寄存器的低半部分與Intel8086/8088、80286微處理器的16位寄存器具有相同的特性,完全向下相容。Intel80386微處理器的功能結(jié)構(gòu)由6個能並行操作的功能部件組成,即匯流排介面部件、代碼預(yù)取部件、指令解碼部件、記憶體管理部件、指令執(zhí)行與控制部件。這些部件按流水線結(jié)構(gòu)設(shè)計,指令的預(yù)取、解碼、執(zhí)行等步驟都由各自的處理部件並行處理。這樣,可以同時處理多條指令,提高了微處理器的處理速度。
匯流排介面部件提供微處理器與外部環(huán)境的介面,在操作時對相應(yīng)信號進(jìn)行驅(qū)動,包括32位地址匯流排和32位數(shù)據(jù)匯流排。由於地址匯流排和數(shù)據(jù)匯流排是分開的,所以,最快能在兩個時鐘週期內(nèi)從記憶體存取32位數(shù)據(jù)。顯然,具有32位運(yùn)算元和尋址形式的指令在執(zhí)行性能上得到增強(qiáng)。還提供了一些用於位處理的新指令。80386匯流排結(jié)構(gòu)具有動態(tài)改變數(shù)據(jù)和地址寬度的能力,既支持16位也支持32位操作。
記憶體管理部件MMU由分段部件和分頁機(jī)構(gòu)組成。分段部件通過提供一個額外的尋址機(jī)構(gòu)對邏輯地址空間進(jìn)行管理,可以實(shí)現(xiàn)任務(wù)之間的隔離,也可以實(shí)現(xiàn)指令和數(shù)據(jù)區(qū)的再定位。80386微處理器也首次將分頁機(jī)制引入到80x86結(jié)構(gòu)中,尺寸固定為4KB的頁面為虛擬存儲管理提供了基礎(chǔ),它比Intel8086/8088地址空間的分段管理更加有效,並且對應(yīng)用程式來說是完全透明的,也不會減低應(yīng)用程式的執(zhí)行速度。2.2.3Intel80486微處理器的功能結(jié)構(gòu)Intel80486微處理器是功能上的另一次飛躍,它把Intel80386微處理器、Intel80x87FPU和片上的Cache集成在一起,從功能上形成了IA-32微處理器結(jié)構(gòu),也就是IA-32微處理器的功能結(jié)構(gòu),如圖2-5所示。Intel80486微處理器基礎(chǔ)結(jié)構(gòu)等同於Intel80386微處理器,它們在寄存器組、尋址方式、記憶體管理特徵、數(shù)據(jù)類型方面都完全相同。為了進(jìn)一步提高微處理器的執(zhí)行性能,在內(nèi)部結(jié)構(gòu)上,對80486微處理器進(jìn)行了一些改進(jìn),使80486的性能更高。
80486微處理器從功能結(jié)構(gòu)來說,已經(jīng)形成了IA-32結(jié)構(gòu)微處理器的基礎(chǔ)。後續(xù)的處理器往往是在指令的流水線結(jié)構(gòu)上,在Cache上以及在指令擴(kuò)展上有了新的發(fā)展。較新的IA-32微處理器的功能結(jié)構(gòu)如圖2-6所示。2.3IA-32結(jié)構(gòu)微處理器的執(zhí)行環(huán)境
本節(jié)描述組合語言程式員看到的IA-32結(jié)構(gòu)微處理器的執(zhí)行環(huán)境,它描述處理器如何執(zhí)行指令以及如何存儲和運(yùn)算元據(jù)。執(zhí)行環(huán)境包括記憶體(地址空間)、通用數(shù)據(jù)寄存器、段寄存器、標(biāo)誌寄存器和指令指針寄存器等。2.3.1操作模式IA-32結(jié)構(gòu)微處理器支持三種操作模式:保護(hù)模式、實(shí)地址模式和系統(tǒng)管理模式。操作模式確定哪些指令和結(jié)構(gòu)特性是可以訪問的。
(1)保護(hù)模式。這是處理器的基本模式。在這種模式中,所有的指令和結(jié)構(gòu)特性是可用的,提供最高的功能和性能。對於所有的操作系統(tǒng)和新的應(yīng)用程式建議採用此模式。在多任務(wù)環(huán)境的保護(hù)模式下,每一個任務(wù)都可以執(zhí)行“實(shí)地址方式下的8086指令”,這就是虛擬8086方式。(2)實(shí)地址模式。這是實(shí)現(xiàn)Intel8086微處理器編程環(huán)境的工作模式並有一些擴(kuò)展(32位寄存器和切換至保護(hù)模式或系統(tǒng)管理模式的能力等)。在系統(tǒng)上電或複位(reset)後,處理器總是處在實(shí)地址模式。
(3)系統(tǒng)管理模式(SSM)。此模式是操作系統(tǒng)為實(shí)現(xiàn)平臺特定的功能或者系統(tǒng)安全提供的一種透明機(jī)制。此模式主要用於自動暫停、睡眠等節(jié)省電源的模式。2.3.2基本執(zhí)行環(huán)境概要
在IA-32處理器上執(zhí)行的程式或任務(wù),都給予一組執(zhí)行指令的資源,用於存儲代碼、數(shù)據(jù)和狀態(tài)資訊。這些資源構(gòu)成了IA-32結(jié)構(gòu)微處理器的執(zhí)行環(huán)境。
(1)地址空間。在IA-32結(jié)構(gòu)微處理器上運(yùn)行的任或程式能尋址多至4GB(232)的線性地址空間(對於80386以上的處理器,因?yàn)?086只有20條地址線,只能尋址1MB)和多至64GB(236)的物理記憶體(對於奔騰pro以上的處理器)。(2)基本程式執(zhí)行寄存器。八個通用寄存器、六個段寄存器、標(biāo)誌寄存器(EFLAGS)和指令指針(EIP)寄存器組成了執(zhí)行通用指令的基本執(zhí)行環(huán)境。這些指令能執(zhí)行位元組、字和雙字整型數(shù)的基本整數(shù)算術(shù)運(yùn)算;處理程式流程控制;在位和位元組串上操作和尋址記憶體。(這些就是8086微處理器的操作。)(3)80x87FPU寄存器。八個80位的80x87FPU數(shù)據(jù)寄存器、80x87FPU控制寄存器、狀態(tài)寄存器、指令指針寄存器、運(yùn)算元(數(shù)據(jù))指針寄存器、標(biāo)記寄存器和操作碼寄存器。這樣的執(zhí)行環(huán)境能對單精確度、雙精度和雙擴(kuò)展精度浮點(diǎn)數(shù),字、雙字和四字整數(shù)以及二進(jìn)位編碼的十進(jìn)位(BCD)值進(jìn)行操作。(4)MMX寄存器。八個MMX寄存器支持在64位組合的(組合的是指一個位元組中具有兩位BCD十進(jìn)位數(shù))位元組、字和雙字整數(shù)上執(zhí)行單指令多數(shù)據(jù)(SIMD)操作。
(5)XMM寄存器。八個XMM數(shù)據(jù)寄存器和MXCSR寄存器支持在128位組合的單精確度和雙精度浮點(diǎn)值和128位組合的位元組、字、雙字和四字整數(shù)上執(zhí)行SIMD操作。(6)堆疊(Stack)。為支持過程或子例程調(diào)用並且在過程或子例程之間傳遞參數(shù),堆疊和堆疊管理資源包含在基本執(zhí)行環(huán)境中。堆疊定位在內(nèi)存中。
(7)I/O端口。IA-32結(jié)構(gòu)支持?jǐn)?shù)據(jù)在處理器和輸入輸出(I/O)端口之間的傳送。
IA-32結(jié)構(gòu)微處理器的基本執(zhí)行環(huán)境如圖2-7所示。
除了基本執(zhí)行環(huán)境中提供的資源之外,IA-32結(jié)構(gòu)微處理器提供以下系統(tǒng)資源。這些資源是IA-32結(jié)構(gòu)微處理器的系統(tǒng)級結(jié)構(gòu)的一部分,它們?yōu)椴僮飨到y(tǒng)和系統(tǒng)開發(fā)軟體提供擴(kuò)展的支持。
(1)控制寄存器。五個控制寄存器(CR0~CR4)確定處理器的操作模式和當(dāng)前執(zhí)行的任務(wù)的特徵。(2)存儲管理寄存器。GDTR、IDTR、任務(wù)寄存器和LDTR。規(guī)定用於保護(hù)模式存儲管理的數(shù)據(jù)結(jié)構(gòu)。
(3)調(diào)試寄存器。調(diào)試寄存器(DR0~DR7)允許監(jiān)控處理器的調(diào)試操作。
(4)存儲類型範(fàn)圍寄存器(MTRRs)。MTRRs用於賦存儲器類型到存儲分區(qū)。2.3.3記憶體組織
處理器在它的地址匯流排上尋址的記憶體稱為物理記憶體。物理記憶體按8位位元組序列組織。每個位元組賦予一個惟一的地址,稱為物理地址。物理地址空間的範(fàn)圍從零至64GB(236-1)的最大值。在IA-32處理器上工作的任何操作系統(tǒng)和執(zhí)行程式使用處理器的存儲管理設(shè)施訪問記憶體。這些設(shè)施提供例如分段和分頁特性以允許有效和可靠地管理記憶體。
本書重點(diǎn)介紹8086微處理器的結(jié)構(gòu)、指令、組合語言以及相應(yīng)的外設(shè)介面。實(shí)地址方式記憶體組織
IA-32結(jié)構(gòu)微處理器中的實(shí)地址方式是為了與8086(8088)微處理器相容而設(shè)置的。所以,IA-32結(jié)構(gòu)微處理器的實(shí)地址方式從記憶體組織來看與8086(8088)的記憶體組織是一樣的。8086CPU有20條地址引線,它的直接尋址能力為1MB(220)。所以,在一個8086組成的系統(tǒng)中,可以有多達(dá)1MB的記憶體。這1MB邏輯上可以組織成一個線性矩陣,地址從00000H到FFFFFH。給定一個20位的地址,就可以從這1MB中取出所需要的指令或運(yùn)算元。8086CPU內(nèi)部的ALU能進(jìn)行16位運(yùn)算,有關(guān)地址的寄存器如SP、IP,以及BP、SI、DI等也都是16位的,因而8086對地址的運(yùn)算也只能是16位。這就是說,對於8086來說,各種尋址方式,尋找運(yùn)算元的範(fàn)圍最多只能是64KB。所以,整個1MB記憶體以64KB為範(fàn)圍分為若干段。
在尋址一個具體物理單元時,由一個基地址再加上由SP、IP、BP、SI或DI等可由CPU處理的16位偏移量來形成實(shí)際的20位物理地址。這個基地址就是由8088中的段寄存器,即碼分段寄存器CS、堆疊分段寄存器SS、數(shù)據(jù)分段寄存器DS以及附加分段寄存器ES中的一個來形成的。在形成20位物理地址時,段寄存器中的16位數(shù)會自動左移4位,然後與16位偏移量相加,如圖2-8所示。
在8086系統(tǒng)中,記憶體的訪問如圖2-9所示。在不改變段寄存器值的情況下,尋址的最大範(fàn)圍是64KB。所以,若有一個任務(wù),它的程式長度、堆疊長度以及數(shù)據(jù)區(qū)長度都不超過64KB,則可在程式開始時,分別給DS、SS、ES置值,然後在程式中可以不再考慮這些段寄存器,程式就可以在各自的區(qū)域中正常地進(jìn)行工作。若某一個任務(wù)所需的總的記憶體長度(包括程式長度、堆疊長度和數(shù)據(jù)長度等)不超過64KB,則可在程式開始時使CS、SS、DS相等,程式也能正常地工作。
上述的記憶體分段方法,對於要求在程式區(qū)、堆疊區(qū)和數(shù)據(jù)區(qū)之間隔離這種任務(wù)時是非常方便的。這種記憶體分段方法,對於一個程式中要用的數(shù)據(jù)區(qū)超過64KB,或要求從兩個(或多個)不同區(qū)域中去存取運(yùn)算元,也是十分方便的,只要在取運(yùn)算元以前,用指令給數(shù)據(jù)段寄存器重新賦值就可以了。
這種分段方法也適用於程式的再定位要求。在很多情況下,要求同一個程式能在內(nèi)存的不同區(qū)域中運(yùn)行,而不改變程式本身,這在8086微處理器中是可行的。只要在程式中的轉(zhuǎn)移指令都使用相對轉(zhuǎn)移指令,而在運(yùn)行這個程式前設(shè)法改變各個段寄存器的值就可以了。如圖2-10所示。分段模式記憶體結(jié)構(gòu)
IA-32結(jié)構(gòu)微處理器的基本存儲模式是分段式存儲模式。與8086微處理器類似,程式中給出的地址由兩部分組成:即段基地址(一個段的起始地址)和段內(nèi)偏移量。段基地址由段寄存器的值確定,而段內(nèi)偏移量是由指令的尋址方式確定。
在8086微處理器中,有四個段寄存器(碼段寄存器CS、堆疊段寄存器SS、數(shù)據(jù)段寄存器DS和附加段寄存器ES),把寄存器的內(nèi)容左移4位就形成了20位的段基地址。段內(nèi)偏移量或是直接地址,或是在某一寄存器中的地址,或是經(jīng)過計算以後的有效地址,總之是16位的偏移量,可以尋址64KB。
在Intel80386以上的IA-32微處理器中,段寄存器擴(kuò)展為六個(增加了兩個數(shù)據(jù)段寄存器FS和GS),每個段寄存器仍是16位的。但是在IA-32結(jié)構(gòu)微處理器中,段基地址也是32位的,所以不能像8086那樣經(jīng)過移位來形成,而是把16位的段寄存器內(nèi)容作為選擇子,以它為索引從記憶體中找到包含32位段基地址的段描述符,以確定32位的段基地址。同樣,確定段內(nèi)偏移量的寄存器也是32位的,故一個段最大可以達(dá)到4GB。
在分段存儲模式,記憶體以稱為段的獨(dú)立地址空間組出現(xiàn)在程式中。當(dāng)使用這種模式時,代碼、數(shù)據(jù)和堆疊典型地包含在不同段中。為了尋址段中的一個位元組,程式必須發(fā)出由段選擇子和偏移量組成的邏輯地址。段選擇子標(biāo)識要訪問的段(由它確定32位的段基地址)而偏移量標(biāo)識段地址空間中的一個位元組。運(yùn)行在IA-32處理器上的程式能尋址多至16383個不同尺寸和類型的段,而每個段最大可以達(dá)到232位元組。
從內(nèi)部來說,在系統(tǒng)上定義的任一位元組的地址由段基地址和段內(nèi)偏移量兩部分組成,這樣的地址稱為邏輯地址。在真正尋址時,要把邏輯地址映射至處理器的線性地址空間。為訪問一個存儲單元,處理器把每個邏輯地址轉(zhuǎn)換為線性地址(32位的段基地址與32位的段內(nèi)偏移量相加產(chǎn)生32位的線性地址)。這種轉(zhuǎn)換對於應(yīng)用程式是透明的。3.平面存儲模式平面存儲模式實(shí)質(zhì)上是分段存儲模式的一種特例。當(dāng)所有段寄存器的值相等並且全指向線性地址0(所有段的段基地址都為0)時,所有段都重合於同一個線性地址空間,這種不分段的存儲模式稱做平面存儲模式。如圖2-11所示。在平面存儲模式中,記憶體作為單個連續(xù)的地址空間,稱為線性地址空間。代碼(程式的指令)、數(shù)據(jù)和過程堆疊全都包含在此地址空間中,線性地址空間是以位元組尋址的,地址可以從0到232-1連續(xù)尋址。2.3.4基本的程式執(zhí)行寄存器
處理器為通用系統(tǒng)和應(yīng)用程式編程提供了16個基本程式執(zhí)行寄存器,如圖2-12所示。這些寄存器分組如下:
(1)通用寄存器。這八個寄存器能用於存放運(yùn)算元和指針。(2)段寄存器。這些寄存器最多能保持六個段選擇子。
(3)程式狀態(tài)和控制(EFLAGS)寄存器。EFLAGS寄存器報告正在運(yùn)行的程式的狀態(tài),並且允許有限地(應(yīng)用程式級)控制處理器。
(4)指令指針(EIP)寄存器。EIP寄存器包含下一條要執(zhí)行的指令的32位指針。通用寄存器八個32位通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP用於處理以下事項:
(1)邏輯和算術(shù)操作的運(yùn)算元;
(2)用於地址計算的運(yùn)算元;
(3)記憶體指針。
雖然所有這些寄存器都可用於存放運(yùn)算元、結(jié)果和指針,但在引用ESP寄存器時要特別小心,ESP寄存器保持堆疊指針,通常不要用於其他目的。許多指令賦特定的寄存器以保持運(yùn)算元。例如,串操作指令用ECX、ESI和EDI寄存器的內(nèi)容作為運(yùn)算元。當(dāng)用分段存儲模式時,某些指令假定在一定寄存器中的指針相對於特定的段。80386通用寄存器的低16位直接映射至8086微處理器中能找到的寄存器組,並用寄存器名AX、BX、CX、DX、BP、SP、SI和DI引用,如圖2-13所示。這些16位寄存器中的前四個寄存器,即AX、BX、CX和DX,又可以分別作為AH、BH、CH和DH(高位元組)以及AL、BL、CL和DL(低位元組)8位寄存器引用。2.段寄存器段寄存器(CS、DS、SS、ES、FS和GS)保持16位段選擇子。一個段選擇子是標(biāo)識記憶體中一個段的特殊指針。為訪問在內(nèi)存中的具體段,此段的段選擇子必須存在於適當(dāng)?shù)亩渭拇嫫髦小?/p>
當(dāng)使用平面存儲模式時,段寄存器用相同的段選擇子加載,它們都指向同一個從地址0開始的線性地址空間,如圖2-14所示。於是,這些重疊的段構(gòu)成了程式的線性地址空間。(典型地定義了兩個重疊的段:一個是碼段,另一個是數(shù)據(jù)和堆疊段。CS段寄存器指向碼段,而所有其他段寄存器指向數(shù)據(jù)和堆疊段。)
當(dāng)使用分段存儲模式時,初始,每一個段寄存器用不同的段選擇子加載,所以每個段寄存器指向線性地址空間中的不同的段。如圖2-15所示。任何時候,一個程式能訪問多至線性地址空間中的六個段。為訪問未由一個段寄存器指向的段,程式必須首先把要訪問的段的段選擇子加載至一個段寄存器。3.EFLAGS寄存器
32位EFLAGS寄存器包含一組狀態(tài)標(biāo)誌、一個控制標(biāo)誌和一組系統(tǒng)標(biāo)誌。圖2-16定義了此寄存器中的標(biāo)誌。
EFLAGS寄存器中的某些標(biāo)誌能用特定目的的指令直接修改,沒有指令允許審查或直接修改整個寄存器。然而,某些特定的指令可以用來移動標(biāo)誌組到過程堆疊或EAX寄存器,以修改某些位。
EFLAGS寄存器包含以下標(biāo)誌:
(1)狀態(tài)標(biāo)誌
EFLAGS寄存器的狀態(tài)標(biāo)誌(位0、2、4、6、7和位11)指示算術(shù)指令,例如ADD、SUB、MUL和DIV指令的結(jié)果的一些特徵。狀態(tài)標(biāo)誌的功能如下:
①進(jìn)位標(biāo)誌CF(CarryFlag)
進(jìn)位標(biāo)誌CF又簡稱為C(注:以下各標(biāo)誌位用簡稱表述)。當(dāng)結(jié)果的最高位(位元組操作時的D7或字操作時的D15、雙字操作的D31)產(chǎn)生一個進(jìn)位或借位,則C=1,否則C=0。這個標(biāo)誌主要用於多位元組數(shù)的加、減法運(yùn)算。移位和迴圈指令也能夠把記憶體和寄存器中的最高位(左移時)或者最低位(右移時)放入進(jìn)位標(biāo)誌C中。②輔助進(jìn)位標(biāo)誌A(AuxitiaryCarryFlag)
在位元組操作時,由低半位元組(一個位元組的低4位)向高半位元組有進(jìn)位或借位時,則A=1,否則A=0。這個標(biāo)誌用於十進(jìn)位算術(shù)運(yùn)算指令中。
③溢出標(biāo)誌O(OverflowFlag)
在算術(shù)運(yùn)算中,帶符號數(shù)的運(yùn)算結(jié)果超出了8位、16位或32位帶符號數(shù)能表達(dá)的範(fàn)圍,即在位元組運(yùn)算時大於+127或小於-128,在字運(yùn)算時大於+32767或小於-32768,在雙字運(yùn)算時大於+231-1或小於-231,則此標(biāo)誌置位,否則複位。一個任選的溢出中斷指令,在溢出情況下能產(chǎn)生中斷。④符號標(biāo)誌S(SignFlag)
它的值與運(yùn)算結(jié)果的最高位相同,即結(jié)果的最高位(字操作時為D15)為1,則S=1;否則S=0。由於在IA-32結(jié)構(gòu)微處理器中,符號數(shù)是用補(bǔ)數(shù)表示的,所以S表示了結(jié)果的符號,“0”表示正,“1”表示負(fù)。
⑤奇偶標(biāo)誌P(ParityFlag)
若操作結(jié)果中“1”的個數(shù)為偶數(shù),則P=1;否則P=0。這個標(biāo)誌可用於檢查在數(shù)據(jù)傳送過程中是否發(fā)生錯誤。
⑥零標(biāo)誌Z(ZeroFlag)
若運(yùn)算的結(jié)果為0,則Z=1;否則Z=0。
條件指令Jcc(在條件碼cc為真時,發(fā)生轉(zhuǎn)移)、SETcc(在條件碼cc為真時,設(shè)置)、LOOPcc
和CMOVcc(條件傳送),用一個或多個狀態(tài)標(biāo)誌作為條件碼,並且在轉(zhuǎn)移、設(shè)置位元組或結(jié)束迴圈時測試它們。條件可以分成以下兩大類:根據(jù)單個標(biāo)誌位所形成的條件;根據(jù)若干個標(biāo)誌位的邏輯運(yùn)算所形成的條件。下麵以條件轉(zhuǎn)移指令為例介紹這兩類條件:
①根據(jù)單個標(biāo)誌位的條件轉(zhuǎn)移指令
■c標(biāo)誌
a.JB/JNAE/JC
這是當(dāng)進(jìn)位標(biāo)誌C=1時,能轉(zhuǎn)移至目標(biāo)地址的條件轉(zhuǎn)移指令的三種助記符。
b.JAE/JNB/JNC
這是當(dāng)進(jìn)位標(biāo)誌C=0時,能轉(zhuǎn)移至目的地址的條件轉(zhuǎn)移指令的三種助記符。
■Z標(biāo)誌
a.JE/JZ
這是當(dāng)零標(biāo)誌Z=1時,能轉(zhuǎn)移至目標(biāo)地址的條件轉(zhuǎn)移指令的兩種助記符。
b.JNE/JNZ
這是當(dāng)零標(biāo)誌Z=0時,能轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令的兩種助記符。
■S標(biāo)誌
a.JS
這是當(dāng)符號位S=1時,能轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令。
b.JNS
這是當(dāng)符號標(biāo)誌S=0時,能轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令。
■P標(biāo)誌
a.JP/JPE
這是當(dāng)奇偶標(biāo)誌P=1,能轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令。
b.JNP/JPO
這是當(dāng)奇偶標(biāo)誌P=0時,能轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令的兩種助記符。
■O標(biāo)誌
a.JO
這是當(dāng)溢出標(biāo)誌O=1時,能轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令的助記符。
b.JNO
這是當(dāng)溢出標(biāo)誌O=0時,能夠轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令的助記符。②組合條件的條件轉(zhuǎn)移指令
IA-32結(jié)構(gòu)微處理器的這一類轉(zhuǎn)移指令,主要用來判斷兩個數(shù)的大小。由於參加比較的數(shù)的性質(zhì)不同,判斷大小的方法也不同。兩個正數(shù)相比較,可以用結(jié)果的符號位S標(biāo)誌來判斷。兩個無符號數(shù)相比較,可由進(jìn)位標(biāo)誌來判斷。若要考慮是否相等的條件即判斷高於或等於的條件,或者低於或等於的條件,就要組合C標(biāo)誌和Z標(biāo)誌。而兩個帶符號數(shù)相比較,就要組合符號標(biāo)誌S和溢出標(biāo)誌O,包含是否相等的條件就要組合Z標(biāo)誌。
■判斷無符號數(shù)的大小
a.JA/JNBE
即兩個無符號數(shù)A和B相比較,當(dāng)A>B(不包括相等的情況)時就滿足這個條件。怎樣來表示這個條件呢?不相等必須Z=0,高於則沒有借位即C=0。所以,條件為C∧Z=0。當(dāng)滿足這個條件時,能轉(zhuǎn)移到目標(biāo)地址。
b.JBE/JNA
這也是一條條件轉(zhuǎn)移指令的兩種助記符。兩個無符號數(shù)(A和B)相比較,當(dāng)A≤B時就滿足這個條件。反映這個條件的標(biāo)誌為:有相等情況,則Z=1;低於則必有借位C=1。所以,條件是C∨Z=1。當(dāng)滿足這個條件時,能轉(zhuǎn)移到目標(biāo)地址。
■判斷帶符號數(shù)的大小
a.JG/JNLE
這是一條條件轉(zhuǎn)移指令的兩種助記符。兩個帶符號數(shù)A和B相比較,當(dāng)A>B(不包括相等)時就滿足這個條件。不相等,則必然Z=0;帶符號數(shù)大於,則必須S⊕O=0(兩者都為0或兩者都為1)。所以,反映這個條件的標(biāo)誌是:S⊕O=0&(Z=0)。當(dāng)滿足這個條件時,能轉(zhuǎn)移到目標(biāo)地址。
b.JGE/JNL
這也是一條條件轉(zhuǎn)移指令的兩種助記符。與上一條條件轉(zhuǎn)移指令相比,本指令只是條件為A≥B,包含著相等的情況,所以去掉Z必須為0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025項目法律服務(wù)合同
- 2023八年級英語下冊 Unit 4 Why don't you talk to your parents Section A 第1課時(1a-2d)說課稿 (新版)人教新目標(biāo)版
- 7多元文化 多樣魅力《多彩的世界文化》(說課稿)-統(tǒng)編版道德與法治六年級下冊
- 2025合同模板承包合同書(車輛)范本
- 2025中外合資公司勞動合同協(xié)議書
- 直飲水施工方案
- 食堂餐廳售賣設(shè)備施工方案
- 2024年春七年級語文下冊 第4單元 13 葉圣陶先生二三事說課稿 新人教版
- 《1 信息并不神秘》說課稿-2023-2024學(xué)年華中師大版信息技術(shù)三年級上冊
- Unit 2 Expressing yourself Part A Lets spell(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級下冊001
- SWITCH塞爾達(dá)傳說曠野之息-1.6金手指127項修改使用說明教程
- 2022-2023學(xué)年廣東省佛山市順德區(qū)高三(下)模擬英語試卷
- 節(jié)后復(fù)工培訓(xùn)內(nèi)容五篇
- GB/T 33322-2016橡膠增塑劑芳香基礦物油
- GA 1051-2013槍支彈藥專用保險柜
- 某水毀公路維修工程施工方案
- 家庭病房工作制度和人員職責(zé)
- 建設(shè)工程監(jiān)理合同示范文本GF-2018-0202
- 2022質(zhì)檢年終工作總結(jié)5篇
- 江蘇省中等職業(yè)學(xué)校學(xué)業(yè)水平考試商務(wù)營銷類(營銷方向)技能考試測試題
- 國際商務(wù)談判雙語版課件(完整版)
評論
0/150
提交評論