![《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第5章_第1頁(yè)](http://file4.renrendoc.com/view9/M03/0D/36/wKhkGWdOltaAP5SIAAOPysSB4OQ546.jpg)
![《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第5章_第2頁(yè)](http://file4.renrendoc.com/view9/M03/0D/36/wKhkGWdOltaAP5SIAAOPysSB4OQ5462.jpg)
![《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第5章_第3頁(yè)](http://file4.renrendoc.com/view9/M03/0D/36/wKhkGWdOltaAP5SIAAOPysSB4OQ5463.jpg)
![《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第5章_第4頁(yè)](http://file4.renrendoc.com/view9/M03/0D/36/wKhkGWdOltaAP5SIAAOPysSB4OQ5464.jpg)
![《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第5章_第5頁(yè)](http://file4.renrendoc.com/view9/M03/0D/36/wKhkGWdOltaAP5SIAAOPysSB4OQ5465.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章指令系統(tǒng)5.1指令系統(tǒng)概述5.2指令系統(tǒng)結(jié)構(gòu)層定義5.3指令設(shè)計(jì)5.4基本尋址方式5.5
CISC與RISC5.6典型指令系統(tǒng)
5.1指令系統(tǒng)概述
計(jì)算機(jī)完成各種各樣的工作都是通過(guò)執(zhí)行計(jì)算機(jī)程序來(lái)體現(xiàn)的。程序是由一系列有時(shí)間順序、有邏輯關(guān)系的指令構(gòu)成的。指令是控制計(jì)算機(jī)硬件完成指定的基本操作(如加、減、移動(dòng)等)的命令,是用戶使用計(jì)算機(jī)和計(jì)算機(jī)本身運(yùn)行的最小功能單位。能被一臺(tái)計(jì)算機(jī)執(zhí)行的全部指令的集合稱為該機(jī)的指令系統(tǒng)(也稱指令集,即InstructionSet)。指令有兩種表現(xiàn)形式:機(jī)器指令和助記符指令。
下面給出的兩條指令示例為Intel系統(tǒng)的指令:在計(jì)算機(jī)體系結(jié)構(gòu)中,根據(jù)對(duì)設(shè)計(jì)者、使用者不同的需求和要求,計(jì)算機(jī)被分為多個(gè)層次,圖1.2就是一種通俗的計(jì)算機(jī)分層結(jié)構(gòu)。從更深層、更專業(yè)的角度,可以將圖1.2的下面三層描述為微體系結(jié)構(gòu)層、指令系統(tǒng)結(jié)構(gòu)(InstructionSystemArchitecture,ISA)層和操作系統(tǒng)層,見(jiàn)圖5.1。圖5.1指令系統(tǒng)結(jié)構(gòu)層的作用
5.2指令系統(tǒng)結(jié)構(gòu)層定義
5.2.1存儲(chǔ)模式
1.數(shù)據(jù)存儲(chǔ)順序
不同的計(jì)算機(jī)系統(tǒng)采用不同的方式來(lái)存儲(chǔ)數(shù)據(jù)。
(1)大端存儲(chǔ)(Big-EndianOrdering):
(2)小端存儲(chǔ)(Little-EndianOrdering):
例5.1一個(gè)32位的十六進(jìn)制數(shù)據(jù)12345678H,存儲(chǔ)在1000H地址開(kāi)始的以字節(jié)編址的主存空間中,其存儲(chǔ)結(jié)果見(jiàn)表5.1。
2.邊界對(duì)齊
所謂邊界對(duì)齊是指數(shù)據(jù)存儲(chǔ)在低位地址以全0開(kāi)始的連續(xù)存儲(chǔ)單元中。在64位字長(zhǎng)的計(jì)算機(jī)系統(tǒng)中,邊界對(duì)齊的兩字節(jié)數(shù)據(jù)的地址是2的整數(shù)倍,半字地址是4的整數(shù)倍,字地址是8的整數(shù)倍,見(jiàn)圖5.2(a)。當(dāng)所存數(shù)據(jù)不能滿足此要求時(shí),可填充一個(gè)或多個(gè)空白字節(jié)。
在數(shù)據(jù)邊界未對(duì)齊的計(jì)算機(jī)中,數(shù)據(jù)(例如一個(gè)字)的存儲(chǔ)將跨兩個(gè)邊界對(duì)齊的存儲(chǔ)單元,此時(shí)讀寫一個(gè)完整的數(shù)據(jù)需要訪問(wèn)兩次存儲(chǔ)器,并需對(duì)高低字節(jié)的順序進(jìn)行調(diào)整,見(jiàn)圖5.2(b)。圖5.2以小端模式存儲(chǔ)數(shù)據(jù)(0807060504030201H)的情況
3.堆棧(Stack)
在所有計(jì)算機(jī)系統(tǒng)中,對(duì)于主存的大部分空間,允許在任何時(shí)間對(duì)其中的任何存儲(chǔ)單元進(jìn)行讀寫操作,且讀寫時(shí)間相同,這種特性稱為主存的隨機(jī)讀寫特性。但有時(shí)我們希望對(duì)主存的操作有一定的順序性,堆棧就是主存中被特殊定義的一塊存儲(chǔ)區(qū)域,它具有先進(jìn)后出(FirstInLastOut,F(xiàn)ILO)的操作規(guī)則。在使用堆棧之前,先要對(duì)堆棧的大小、在主存中的位置做出定義。使用堆棧時(shí)用三個(gè)專用地址寄存器來(lái)管理:
(1)堆棧指針(StackPointer,SP):指示當(dāng)前可操作的堆棧單元。
(2)堆?;?StackBase,SB):指示堆棧的底部。
(3)堆棧界限(StackLimit,SL):指示堆棧的最頂端。
堆棧界限=堆?;贰蓝褩4笮D5.3堆棧的基本操作
4.馮·諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu)
在馮·諾依曼計(jì)算機(jī)中規(guī)定,指令與數(shù)據(jù)均用二進(jìn)制表示,并可在整個(gè)主存中混合存放,如圖5.4(a)所示。圖5.4兩種主存結(jié)構(gòu)
5.加載/存儲(chǔ)體系結(jié)構(gòu)
在許多RISC系統(tǒng)中,指令系統(tǒng)只提供了兩條對(duì)主存操作的指令,即加載(Load)和存儲(chǔ)(Store)指令。Load指令實(shí)現(xiàn)將主存的數(shù)據(jù)傳送到寄存器,Store指令實(shí)現(xiàn)將寄存器的數(shù)據(jù)傳送到主存。在這種加載/存儲(chǔ)體系結(jié)構(gòu)中,所有運(yùn)算的源操作數(shù)由寄存器或指令提供,而不是直接來(lái)自主存;運(yùn)算結(jié)果也必須放在寄存器中,而不是直接寫入主存。5.2.2寄存器組織
寄存器是存儲(chǔ)體系中最上層(速度最快、容量最小)的存儲(chǔ)部件,是CPU內(nèi)部配合控制器、運(yùn)算器工作的重要部件,也是指令系統(tǒng)結(jié)構(gòu)層定義的重要對(duì)象。從指令系統(tǒng)結(jié)構(gòu)層來(lái)看,寄存器是軟件設(shè)計(jì)者唯一能操作的CPU內(nèi)部資源。5.2.3數(shù)據(jù)類型
數(shù)據(jù)作為指令的處理對(duì)象,需要有不同的類型、不同的格式表示。數(shù)據(jù)類型不同,則處理方法不同,需要的硬件支持也不同。5.2.4指令
指令系統(tǒng)是指令系統(tǒng)結(jié)構(gòu)層的主要特征,它的每一條指令可以被CPU執(zhí)行,并規(guī)定了計(jì)算機(jī)的基本功能。由指令構(gòu)成的程序控制了計(jì)算機(jī)系統(tǒng)的運(yùn)行,并決定了計(jì)算機(jī)系統(tǒng)要完成的任務(wù)。移位類運(yùn)算指令一般包括算術(shù)左移和右移、邏輯左移和右移、帶進(jìn)位循環(huán)(大循環(huán))左移和右移、不帶進(jìn)位循環(huán)(小循環(huán))左移和右移,可以實(shí)現(xiàn)對(duì)操作數(shù)移一位或若干位。具體操
作如圖5.5所示。圖5.5移位操作
5.3指令設(shè)計(jì)
在確定了指令功能、數(shù)據(jù)類型、寄存器組織等與指令系統(tǒng)架構(gòu)相關(guān)的信息之后,具體的指令設(shè)計(jì)就成為指令系統(tǒng)設(shè)計(jì)的核心。5.3.1指令格式
為了使指令能夠有效地指揮計(jì)算機(jī)完成各種操作,一條指令應(yīng)包含兩個(gè)基本要素:操作碼和地址碼,其基本格式如下:5.3.2地址碼設(shè)計(jì)
指令功能不同,需要的操作數(shù)數(shù)量也有所不同。利用地址碼字段可以為指令指定源操作數(shù)、目的操作數(shù)和下條指令地址等信息,格式如下:按照地址碼字段的數(shù)量,指令也可以分為四地址指令、三地址指令、兩地址指令、一地址指令和零地址指令,其指令格式如下:5.3.3操作碼設(shè)計(jì)
1.定長(zhǎng)操作碼
對(duì)所有指令的操作碼用相同位數(shù)的二進(jìn)制數(shù)進(jìn)行編碼即為定長(zhǎng)操作碼編碼方式。例如,某計(jì)算機(jī)的指令系統(tǒng)需要設(shè)置N條指令,若所有指令的操作碼均用n位二進(jìn)制數(shù)表示,則
應(yīng)滿足關(guān)系式:
N≤2n。從2n個(gè)編碼中選出N個(gè)編碼分配給N條指令,即可完成操作碼設(shè)計(jì)。
2.變長(zhǎng)操作碼
對(duì)不同類型的指令操作碼用不固定長(zhǎng)度的二進(jìn)制數(shù)進(jìn)行編碼即為變長(zhǎng)操作碼編碼方式,也稱作擴(kuò)展操作碼編碼方式。
擴(kuò)展操作碼技術(shù)是一種重要的指令優(yōu)化技術(shù),其技術(shù)核心是:
①使程序中指令的平均操作碼長(zhǎng)度盡可能短,以減少操作碼在程序中的總位數(shù);
②盡可能充分地利用指令的二進(jìn)制數(shù)位,以增加指令字表示的操作信息。擴(kuò)展操作碼的設(shè)計(jì)原則如下:
(1)如果指令字長(zhǎng)固定,則長(zhǎng)地址碼對(duì)應(yīng)短操作碼,操作碼長(zhǎng)度隨地址碼長(zhǎng)度縮短而增加。
(2)如果指令字長(zhǎng)可變,則以指令使用頻度(指令在程序中出現(xiàn)的概率)作為設(shè)計(jì)依據(jù),使用頻度高的指令用短操作碼,使用頻度低的指令用長(zhǎng)操作碼,這便是霍夫曼(Huffman)
編碼原理。
(3)設(shè)計(jì)總是從短操作碼開(kāi)始,并要保證當(dāng)前使用的操作碼編碼與未來(lái)要擴(kuò)展的操作碼編碼能夠有效地區(qū)分。
1)基于霍夫曼編碼原理設(shè)計(jì)變長(zhǎng)操作碼
統(tǒng)計(jì)發(fā)現(xiàn),在程序設(shè)計(jì)過(guò)程中,由于指令功能的不同和設(shè)計(jì)者對(duì)指令使用愛(ài)好的不同,致使一個(gè)指令系統(tǒng)中的各種指令使用頻度大不相同。表5.2是針對(duì)SPECint92測(cè)試程序?qū)?/p>
80x86指令使用情況的統(tǒng)計(jì)結(jié)果。
例5.2某計(jì)算機(jī)有10條指令,它們的使用頻率分別為0.30、0.20、0.16、0.09、0.08、0.07、0.04、0.03、0.02、0.01。用Huffman樹(shù)(最優(yōu)二叉樹(shù))對(duì)它們的操作碼進(jìn)行編碼,
并計(jì)算平均代碼長(zhǎng)度。圖5.6
Huffman樹(shù)
解圖5.6為基于霍夫曼編碼原理構(gòu)造的Huffman樹(shù),根據(jù)Huffman樹(shù)得出的Huffman編碼結(jié)果及各編碼的長(zhǎng)度列表
如下:
例5.3某計(jì)算機(jī)系統(tǒng)中有20條指令的使用頻度是80%,80條指令的使用頻度是15%,40條指令的使用頻度是5%,試設(shè)計(jì)固定長(zhǎng)度和可變長(zhǎng)度的操作碼。
解
(1)定長(zhǎng)操作碼:140條指令,8位操作碼長(zhǎng)度,從256種編碼中選出140種編碼分配給140條指令作為它們的操作碼。
(2)擴(kuò)展操作碼:一種設(shè)計(jì)結(jié)果列于下表。
2)基于特定規(guī)則擴(kuò)展操作碼
設(shè)計(jì)擴(kuò)展操作碼不僅要考慮操作碼的可分辨性,還應(yīng)考慮其是否便于快速譯碼。圖5.7示出了兩種以某種特定規(guī)則設(shè)計(jì)的擴(kuò)展操作碼。圖5.7特定規(guī)則的擴(kuò)展操作碼編碼方法
3)依據(jù)地址碼數(shù)量擴(kuò)展操作碼
對(duì)于指令字長(zhǎng)度固定的指令系統(tǒng),為了充分利用指令的二進(jìn)制位,操作碼長(zhǎng)度一般隨地址碼數(shù)量多少而變化。
例5.4某指令系統(tǒng)的指令長(zhǎng)度確定為32位,由三地址、二地址、一地址、零地址指令組成,其中各類指令中地址字段位數(shù)如下表,則各類指令的操作碼可以設(shè)計(jì)為幾位?各類指令數(shù)最多可以是多少?
解三地址指令:操作碼6位,指令數(shù)n3≤26-1
雙地址指令:
操作碼11位,指令數(shù)n2≤(26-n3)×25-1
單地址指令:
操作碼16位,指令數(shù)n1≤((26-n3)×25-n2)×25-1
零地址指令:
操作碼32位,指令數(shù)n0≤(((26-n3)×25-n2)
×25-n1)×2165.3.4指令長(zhǎng)度設(shè)計(jì)
指令長(zhǎng)度設(shè)計(jì)的一般原則是:
(1)短的操作碼與多地址碼字段配合,長(zhǎng)的操作碼與簡(jiǎn)單地址碼組合。
(2)指令長(zhǎng)度一般設(shè)計(jì)為總線寬度的整數(shù)倍。
(3)指令長(zhǎng)度為存儲(chǔ)器最小可尋址單位的整數(shù)倍。理論上,可以按下式確定指令長(zhǎng)度,即
(5-1)
式中假設(shè)指令中有M個(gè)地址碼字段,每個(gè)地址碼字段的長(zhǎng)度可以不相同。在實(shí)際的計(jì)算機(jī)系統(tǒng)中,有三種常用的設(shè)計(jì)方案:
(1)定長(zhǎng)操作碼,變長(zhǎng)指令碼。操作碼的長(zhǎng)度固定,且集中放在指令字的第一個(gè)字段中,指令的其余部分全部用于地址碼。例如8086指令系統(tǒng),指令采用8位定長(zhǎng)操作碼、1~5字節(jié)變長(zhǎng)指令碼的格式。
(2)變長(zhǎng)操作碼,定長(zhǎng)指令碼。即在指令碼長(zhǎng)度固定的情況下,讓操作碼位數(shù)隨地址碼長(zhǎng)度的減少而擴(kuò)展,如例5.4所示。
(3)定長(zhǎng)操作碼,定長(zhǎng)指令碼。例如MIPS指令系統(tǒng),指令采用6位定長(zhǎng)操作碼、32位定長(zhǎng)指令碼的格式。
5.4基本尋址方式
尋址方式在指令中以兩種方式呈現(xiàn):
(1)由操作碼決定其尋址方式,稱為隱式尋址。
(2)指令中設(shè)置尋址方式字段,由尋址方式字段的不同編碼來(lái)指定操作數(shù)的尋址方式,稱為顯式尋址。
1.隱含尋址
該尋址方式的特征是,操作數(shù)的存放地由操作碼指定。
以Intel指令為例,加法十進(jìn)制調(diào)整指令DAA隱含規(guī)定調(diào)整對(duì)象為寄存器AL,乘法指令MULBL隱含規(guī)定乘數(shù)之一是8位寄存器AL、乘積存放在16位寄存器AX中。
2.立即尋址
該尋址方式的特征是,操作數(shù)在指令中,見(jiàn)圖5.8。圖5.8立即尋址
3.寄存器尋址
該尋址方式的特征是,操作數(shù)在指令指定的寄存器中,見(jiàn)圖5.9。圖5.9寄存器尋址
4.直接尋址
該尋址方式的特征是操作數(shù)地址在指令中,操作數(shù)在主存單元中,見(jiàn)圖5.10。圖5.10直接尋址
5.間接尋址
該尋址方式的特征是,操作數(shù)地址的地址在指令中,操作數(shù)在主存單元中,見(jiàn)圖5.11。圖5.11間接尋址
6.寄存器間接尋址
該尋址方式的特征是,操作數(shù)地址在指令指定的寄存器中,操作數(shù)在主存單元中,見(jiàn)圖5.12。圖5.12寄存器間接尋址
7.相對(duì)尋址
該尋址方式的特征是,操作數(shù)地址由程序計(jì)數(shù)器和指令提供的地址偏移量決定,操作數(shù)在主存單元中,見(jiàn)圖5.13。圖5.13相對(duì)尋址
8.基址尋址
該尋址方式的特征是,操作數(shù)地址由基址寄存器和指令提供的地址偏移量決定,操作數(shù)在主存單元中,見(jiàn)圖5.14。圖5.14基址尋址
9.變址尋址
該尋址方式的特征是,操作數(shù)地址由變址寄存器和指令提供的地址偏移量決定,操作數(shù)在主存單元中,見(jiàn)圖5.15。圖5.15變址尋址
10.堆棧尋址
該尋址方式通常由指令操作碼指定,用在涉及堆棧操作的指令中,所尋址的操作數(shù)在堆棧中。
壓棧、調(diào)用指令中的目的操作數(shù)地址或彈出、返回指令中的源操作數(shù)地址由堆棧指針SP隱含指定,即EA=(SP)。依據(jù)SP對(duì)堆棧進(jìn)行操作數(shù)壓棧或彈出后,SP的值會(huì)自動(dòng)修改指向新的棧頂單元,見(jiàn)圖5.3。
5.5
CISC與RISC
5.5.1指令系統(tǒng)結(jié)構(gòu)的發(fā)展
在已進(jìn)入計(jì)算機(jī)軟硬件協(xié)同設(shè)計(jì)的今天,計(jì)算機(jī)的每一項(xiàng)設(shè)計(jì)決定都應(yīng)該綜合考慮以下因素:①技術(shù)支持;②計(jì)算機(jī)體系結(jié)構(gòu);③編程語(yǔ)言;④編譯技術(shù);⑤操作系統(tǒng)。同時(shí)所做出的設(shè)計(jì)決定也會(huì)對(duì)這些因素產(chǎn)生影響。所以,指令系統(tǒng)結(jié)構(gòu)發(fā)展中的標(biāo)志性事件都與計(jì)算機(jī)體系結(jié)構(gòu)的進(jìn)步密不可分。
指令系統(tǒng)結(jié)構(gòu)(ISA)的發(fā)展經(jīng)歷了以下階段(見(jiàn)圖5.16)。圖5.16指令系統(tǒng)結(jié)構(gòu)的發(fā)展
1.累加器結(jié)構(gòu)(AccumulatorArchitecture)
2.緊湊代碼和堆棧結(jié)構(gòu)(CompactCode&StackArchitecture)
3.編程模型與實(shí)現(xiàn)的分離
4.高級(jí)語(yǔ)言計(jì)算機(jī)結(jié)構(gòu)(High-LevelLanguageComputerArchitecture,HLLCA)
5.通用寄存器結(jié)構(gòu)(General-PurposeRegisterArchitecture)
6.復(fù)雜指令集計(jì)算機(jī)結(jié)構(gòu)(ComplicatedInstructionSetComputerArchitecture)
7.精簡(jiǎn)指令集計(jì)算機(jī)結(jié)構(gòu)(ReducedInstructionSetComputerArchitecture)
8.超長(zhǎng)指令字結(jié)構(gòu)(VeryLongInstructionWordArchitecture)5.5.2
CISC
早期CISC設(shè)計(jì)有如下特點(diǎn):
(1)指令系統(tǒng)復(fù)雜,即指令數(shù)多、尋址方式多、指令格式多;
(2)絕大多數(shù)指令執(zhí)行需要多個(gè)時(shí)鐘周期;
(3)有多種指令可以訪問(wèn)存儲(chǔ)器;
(4)CPU控制器采用微程序控制方式實(shí)現(xiàn);
(5)寄存器數(shù)量有限。規(guī)模龐大的指令系統(tǒng)在提供豐富指令、有助于靈活程序設(shè)計(jì)的同時(shí),也存在諸多弊端:
(1)為適應(yīng)豐富的指令系統(tǒng),CPU控制器必須很復(fù)雜,相應(yīng)的程序控制存儲(chǔ)裝置必須有更大空間,這會(huì)增加指令執(zhí)行的時(shí)間,抵消復(fù)雜指令預(yù)期帶來(lái)的速度優(yōu)勢(shì);
(2)繁多的指令會(huì)使計(jì)算機(jī)研制周期變長(zhǎng),調(diào)試和維護(hù)難度變大;
(3)復(fù)雜指令系統(tǒng)必然增加硬件設(shè)計(jì)和制造的復(fù)雜性,增加了研制成本。5.5.3
RISC
RISC結(jié)構(gòu)計(jì)算機(jī)具有如下特點(diǎn):
(1)只設(shè)置使用頻度高的簡(jiǎn)單指令,所以指令的操作種類少,尋址方式少;
(2)指令格式規(guī)則,長(zhǎng)度固定,便于簡(jiǎn)單統(tǒng)一的譯碼,可使控制器簡(jiǎn)化、硬件結(jié)構(gòu)精簡(jiǎn);
(3)僅通過(guò)Load和Store指令訪問(wèn)主存;
(4)通用寄存器數(shù)量多,一般有幾十甚至幾百個(gè),大多數(shù)操作在寄存器之間進(jìn)行;
(5)在非流水線RISC中,單條指令可在單機(jī)器周期內(nèi)完成;在流水線RISC中,對(duì)于大多數(shù)指令有CPI=1;
(6)采用硬布線控制器,不使用微代碼(即微程序),有利于提高時(shí)鐘頻率和CPU速度,能夠更好地響應(yīng)中斷;
(7)可簡(jiǎn)化硬件設(shè)計(jì),降低成本及便于超大規(guī)模集成電路實(shí)現(xiàn);
(8)有利于多流水線、多核CPU實(shí)現(xiàn);
(9)適宜高度優(yōu)化編譯器(即編譯程序);
(10)精簡(jiǎn)的指令使程序閱讀、分析難度加大;
(11)不能同CISC兼容,解決辦法一是將源程序在CISC機(jī)器上重新編譯,辦法二是用目標(biāo)代碼翻譯器將CISC代碼翻譯為RISC代碼。
5.6典型指令系統(tǒng)
5.6.1
IntelCPU指令系統(tǒng)
1.IntelCPU指令系統(tǒng)發(fā)展
隨著IntelCPU功能的不斷提升,其指令格式也在不斷擴(kuò)展,指令數(shù)量亦在不斷擴(kuò)大。表5.3是IntelCPU指令系統(tǒng)的發(fā)展歷程,從中可以充分體現(xiàn)出這個(gè)系列指令系統(tǒng)的規(guī)模和
始終堅(jiān)守的向后兼容特性。
2.Intel64和IA-32體系結(jié)構(gòu)的指令格式
當(dāng)指令用符號(hào)表示時(shí),IA-32匯編語(yǔ)句(指令)格式為:
label:mnemonicargument1,argument2,argument3
其中,label是匯編語(yǔ)句(或指令地址)標(biāo)識(shí)符,mnemonic是指令操作碼助記符,操作數(shù)argument1、argument2和argument3是可選項(xiàng),依據(jù)操作碼可以有0~3個(gè)操作數(shù)。例如:
LoadReg:MOVEAX,Date
Intel64和IA-32體系結(jié)構(gòu)指令編碼格式如圖5.17所示,它是對(duì)8086指令格式的擴(kuò)展,它由可選的指令前綴(按任意次序)、基本操作碼字節(jié)(最多3字節(jié))、尋址方式指定字節(jié)(如果需要,由ModR/M和SIB字節(jié)組成)和地址偏移量域(如果需要)、立即數(shù)域(如果需要)組成。指令長(zhǎng)度最短1字節(jié),最長(zhǎng)17字節(jié)。圖5.17
Intel64和IA-32體系結(jié)構(gòu)指令編碼格式
1)指令前綴(InstructionPrefixes)
每條指令可以冠以前綴或不加前綴,指令前綴分為4組:
(1)組1:封鎖和重復(fù)前綴(LockandRepeatPrefixes)。封鎖前綴強(qiáng)制在多處理器環(huán)境中共享存儲(chǔ)器的獨(dú)占使用。重復(fù)前綴引發(fā)一條指令對(duì)串的每個(gè)元素重復(fù)執(zhí)行。
(2)組2:段超越前綴(SegmentOverridePrefixes)。該前綴允許地址跨越不同屬性的段(CS、SS、DS、ES、FS、GS)。
(3)組3:操作數(shù)長(zhǎng)度超越前綴(Operand-sizeOverridePrefix)。該前綴允許程序在16位與32位操作數(shù)之間轉(zhuǎn)換。
(4)組4:地址范圍超越前綴(Address-sizeOverridePrefix)。該前綴允許程序在16位與32位地址空間之間轉(zhuǎn)換。
2)操作碼(Opcodes)
基本操作碼1~3字節(jié),而某些指令附加的3位操作碼在ModR/M字節(jié)中。該字段用來(lái)指明指令的類型和功能。8086系統(tǒng)對(duì)操作碼采用1字節(jié)的固定長(zhǎng)度編碼,而從80386開(kāi)始
擴(kuò)展了操作碼。
Intel64和IA-32指令包括以下類型:
(a)通用目的指令,如數(shù)據(jù)傳送、二進(jìn)制/十進(jìn)制整數(shù)算術(shù)運(yùn)算、邏輯運(yùn)算、移位和旋轉(zhuǎn)運(yùn)算、位操作、串操作、程序控制、標(biāo)志控制、段寄存器操作等,與8086指令兼容;
(b)x87FPU協(xié)處理器指令(FPU-Floating-PointUnit);
(c)SIMD指令(SIMD-SingleInstructionMultipleData);
(d)MMX指令(MMX-MultiMediaeXtensions);
(e)SSE/SSE2/SSE3/SSSE3/SSE4擴(kuò)展指令(SSE-StreamingSIMDExtensions,SSSE-SupplementalSSE);
(f)系統(tǒng)指令。
3)尋址方式(Addressing-formSpecifier)
ModR/M字節(jié)或ModR/M+SIB(Scale-Index-Base)字節(jié)指定32位系統(tǒng)中的尋址方式。32位系統(tǒng)規(guī)定的尋址方式除了將ModR/M字節(jié)中提供基本地址的寄存器長(zhǎng)度和數(shù)量擴(kuò)大之外,還增加了由SIB字節(jié)指定的帶比例因子的尋址方式,其有效地址EA由基址(Base)、指針(Index)、位移量(Displacement)和比例因子(ScaleFactor)運(yùn)算得到,即
EA=(基址寄存器)+(指針寄存器)×比例因子+位移量圖5.18
IntelCPU對(duì)存儲(chǔ)器尋址時(shí)邏輯地址到物理地址的轉(zhuǎn)換
4)偏移量(Displacement)
地址偏移量域提供某些尋址方式需要的偏移地址(也稱相對(duì)地址)。8086系統(tǒng)中的偏移地址是8位或16位的帶符號(hào)數(shù),80386之后系統(tǒng)中的偏移地址是8位、16位或32位的帶符號(hào)數(shù)。
5)立即數(shù)(Immediate)
立即數(shù)域在立即尋址時(shí)提供指令所需的立即數(shù)。
3.IA-32e模式的指令格式
IA-32e模式有兩個(gè)子模式:
(1)兼容模式(CompatibilityMode)。允許64位操作系統(tǒng)運(yùn)行大多數(shù)繼承的未修改的保護(hù)模式軟件。
(2)64位模式(64BitMode)。允許64位操作系統(tǒng)運(yùn)行訪問(wèn)64位地址空間的應(yīng)用程序。
64位模式的指令格式見(jiàn)圖5.19,與圖5.17比較,它在IA-32指令格式的基礎(chǔ)上又增加了1字節(jié)的REX前綴。圖5.19
64位模式的指令格式
REX前綴起如下作用:
①指定GPR和SSE寄存器(GPR-General-Purpose
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版地理八年級(jí)下冊(cè)6.2《白山黑水-東北三省》聽(tīng)課評(píng)課記錄1
- 蘇科版九年級(jí)數(shù)學(xué)聽(tīng)評(píng)課記錄:第50講 二次函數(shù)y
- 七年級(jí)下聽(tīng)評(píng)課記錄數(shù)學(xué)
- 新版湘教版秋八年級(jí)數(shù)學(xué)上冊(cè)第四章一元一次不等式組課題一元一次不等式的應(yīng)用聽(tīng)評(píng)課記錄
- 申請(qǐng)?jiān)诩易詫W(xué)的協(xié)議書(shū)(2篇)
- 電價(jià)變更合同范本(2篇)
- 蘇科版數(shù)學(xué)七年級(jí)下冊(cè)聽(tīng)評(píng)課記錄8.1同底數(shù)冪的乘法
- 湘教版數(shù)學(xué)九年級(jí)下冊(cè)2.5《直線與圓的位置關(guān)系》聽(tīng)評(píng)課記錄3
- 一年級(jí)上冊(cè)數(shù)學(xué)聽(tīng)評(píng)課記錄《3.8 小雞吃食 》 北師大版
- 2025年錫焊專用設(shè)備合作協(xié)議書(shū)
- 小學(xué)數(shù)學(xué)三年級(jí)下冊(cè)第八單元《數(shù)學(xué)廣角-搭配(二)》大單元集體備課整體設(shè)計(jì)
- (高清版)TDT 1031.6-2011 土地復(fù)墾方案編制規(guī)程 第6部分:建設(shè)項(xiàng)目
- 2024年江蘇省高中學(xué)業(yè)水平測(cè)試生物試卷
- 露天采場(chǎng)危險(xiǎn)有害因素辨識(shí)
- 蘇教版一年級(jí)上、下冊(cè)勞動(dòng)與技術(shù)教案
- 七上-動(dòng)點(diǎn)、動(dòng)角問(wèn)題12道好題-解析
- 山東曲阜的孔廟之旅
- 一到六年級(jí)語(yǔ)文詞語(yǔ)表人教版
- 中煤集團(tuán)綜合管理信息系統(tǒng)運(yùn)維服務(wù)解決方案-V3.0
- 直播營(yíng)銷與運(yùn)營(yíng)(第2版)全套教學(xué)課件
- 高二英語(yǔ)閱讀理解30篇
評(píng)論
0/150
提交評(píng)論