計(jì)算機(jī)系統(tǒng)-從應(yīng)用程序到底層實(shí)現(xiàn) 課件 第14講-體系結(jié)構(gòu)與64位系統(tǒng)_第1頁(yè)
計(jì)算機(jī)系統(tǒng)-從應(yīng)用程序到底層實(shí)現(xiàn) 課件 第14講-體系結(jié)構(gòu)與64位系統(tǒng)_第2頁(yè)
計(jì)算機(jī)系統(tǒng)-從應(yīng)用程序到底層實(shí)現(xiàn) 課件 第14講-體系結(jié)構(gòu)與64位系統(tǒng)_第3頁(yè)
計(jì)算機(jī)系統(tǒng)-從應(yīng)用程序到底層實(shí)現(xiàn) 課件 第14講-體系結(jié)構(gòu)與64位系統(tǒng)_第4頁(yè)
計(jì)算機(jī)系統(tǒng)-從應(yīng)用程序到底層實(shí)現(xiàn) 課件 第14講-體系結(jié)構(gòu)與64位系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《計(jì)算機(jī)系統(tǒng)》體系工作原理《計(jì)算機(jī)系統(tǒng)》課程教學(xué)組2025年春季學(xué)期43512體系簡(jiǎn)介指令執(zhí)行與流水線非常簡(jiǎn)單CPU(VS-CPU)CISCRISC內(nèi)容提要馮.諾伊曼體系結(jié)構(gòu)存儲(chǔ)程序原理的基本點(diǎn):指令驅(qū)動(dòng)程序預(yù)先存放在計(jì)算機(jī)存儲(chǔ)器中,計(jì)算機(jī)一旦啟動(dòng),就能按照程序指定的邏輯順序執(zhí)行這些程序,自動(dòng)完成由程序所描述的處理工作。馮·諾依曼結(jié)構(gòu)的主要特點(diǎn)以運(yùn)算器為中心。在存儲(chǔ)器中,指令和數(shù)據(jù)同等對(duì)待。指令和數(shù)據(jù)一樣可以進(jìn)行運(yùn)算,即由指令組成的程序是可以修改的。存儲(chǔ)器是按地址訪問(wèn)、按順序線性編址的一維結(jié)構(gòu),每個(gè)單元的位數(shù)是固定的。馮.諾伊曼體系結(jié)構(gòu)主要特點(diǎn)ABC指令的執(zhí)行是順序的。一般是按照指令在存儲(chǔ)器中存放的順序執(zhí)行;程序的分支由轉(zhuǎn)移指令實(shí)現(xiàn)。由指令計(jì)數(shù)器PC指明當(dāng)前正在執(zhí)行的指令在存儲(chǔ)器中的地址。指令由操作碼和地址碼組成。指令和數(shù)據(jù)均以二進(jìn)制編碼表示,采用二進(jìn)制運(yùn)算。馮.諾伊曼體系結(jié)構(gòu)43512體系簡(jiǎn)介指令執(zhí)行與流水線非常簡(jiǎn)單CPU(VS-CPU)CISCRISC內(nèi)容提要CPU執(zhí)行如下的操作序列

取指令周期:從存儲(chǔ)器中取出一條指令,然后轉(zhuǎn)到譯碼周期。譯碼周期:對(duì)該指令進(jìn)行譯碼,即確定取到的是哪一種指令,然后轉(zhuǎn)移到這種指令對(duì)應(yīng)的執(zhí)行周期。

執(zhí)行周期:執(zhí)行該指令,然后轉(zhuǎn)移到取指令周期去取下一條指令指令的執(zhí)行過(guò)程一般CPU狀態(tài)圖指令的執(zhí)行過(guò)程MIPS經(jīng)典5段執(zhí)行過(guò)程如下:MIPS-簡(jiǎn)介指令執(zhí)行的5個(gè)過(guò)程可以用5個(gè)專(zhuān)用的部件:取指令部件(IF);指令譯碼部件(ID);指令執(zhí)行部件(EX);訪問(wèn)存儲(chǔ)器部件(M);寫(xiě)結(jié)果部件(WB);MIPS經(jīng)典5段流水線:MIPS-經(jīng)典流水線43512體系簡(jiǎn)介指令執(zhí)行與流水線非常簡(jiǎn)單CPU(VS-CPU)CISCRISC內(nèi)容提要存儲(chǔ)空間寄存器指令集64字節(jié)的存儲(chǔ)空間每個(gè)字節(jié)是8位。6位寬的地址:A[5..0]存儲(chǔ)器的8位值:D[7..0]僅有一個(gè)程序員可以訪問(wèn)的寄存器:累加器:AC[7..0]ADD:ACAC+MAND:ACAC^MJMP:GOTOMINC:ACAC+1簡(jiǎn)單CPU設(shè)計(jì)實(shí)例

一個(gè)非常簡(jiǎn)單CPU的設(shè)計(jì)指令指令碼操作ADD00AAAAAAACAC+M[AAAAAA]AND01AAAAAAACAC^M[AAAAAA]JMP10AAAAAAGOTOAAAAAA(PC=AAAAAA)INC11XXXXXXACAC+1指令寄存器IR[1..0]數(shù)據(jù)寄存器DR[7..0]程序計(jì)數(shù)器PC[5..0]地址寄存器AR[5..0]通過(guò)A[5..0]向存儲(chǔ)器提供地址包含下一條將被執(zhí)行指令的地址。通過(guò)D[7..0]從存儲(chǔ)器接收指令和數(shù)據(jù)。用來(lái)存放從存儲(chǔ)器中取回的指令的操作碼部分。寄存器簡(jiǎn)單CPU設(shè)計(jì)實(shí)例本CPU的狀態(tài)圖:包括了取指、譯碼和執(zhí)行周期。一個(gè)非常簡(jiǎn)單CPU的設(shè)計(jì)修改后的CPU內(nèi)部組織結(jié)構(gòu)圖中的控制信號(hào)將會(huì)由控制單元來(lái)產(chǎn)生)一個(gè)非常簡(jiǎn)單CPU的設(shè)計(jì)一個(gè)非常簡(jiǎn)單CPU的設(shè)計(jì)一個(gè)非常簡(jiǎn)單CPU的設(shè)計(jì)對(duì)于本CPU,總共有9個(gè)狀態(tài),需要:一個(gè)4位計(jì)數(shù)器一個(gè)4-16位譯碼器,譯碼器的輸出位中有7個(gè)用不到。一個(gè)非常簡(jiǎn)單CPU的設(shè)計(jì)控制單元電路圖一個(gè)非常簡(jiǎn)單CPU的設(shè)計(jì)一個(gè)非常簡(jiǎn)單CPU的設(shè)計(jì)五、組合形成控制AR,PC,DR,IR,M,ALU以及緩沖器的控制信號(hào)微序列控制器的操作1.典型微序列控制器的組成寄存器值與CPU狀態(tài)圖中的一個(gè)狀態(tài)相對(duì)應(yīng),且當(dāng)作地址輸入到微代碼存儲(chǔ)器中。存儲(chǔ)器的輸出是一條微指令,即那個(gè)地址對(duì)應(yīng)的存儲(chǔ)單元內(nèi)容。所有微指令集中組成CPU的微代碼或微程序。下址產(chǎn)生模塊產(chǎn)生所有可能的下一地址,然后從中選擇一個(gè)正確的下址送入寄存器中。微序列控制器設(shè)計(jì)VSCPU沒(méi)有標(biāo)志位2.微指令的組成微指令由幾個(gè)域組成,其bit位可分為兩組。微操作(微序列控制器的微序列部分)這些信號(hào)從微序列控制器輸出到CPU的其他部分,它們或者輸入到組合邏輯以生成CPU的控制信號(hào),或者直接產(chǎn)生控制信號(hào)。下一個(gè)地址(微序列控制器的序列控制部分)用來(lái)產(chǎn)生存儲(chǔ)到寄存器中的下一個(gè)地址,這些位連同指令的操作碼和標(biāo)志值一起輸入到組合邏輯以產(chǎn)生下一條微指令的地址。微序列控制器設(shè)計(jì)微序列控制器的操作必須確定的幾件事情二、

生成正確序列、設(shè)計(jì)映射邏輯并設(shè)計(jì)控制有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的微代碼給有限狀態(tài)機(jī)的每種狀態(tài)分配一個(gè)微代碼地址:每一執(zhí)行周期的第一個(gè)狀態(tài)的地址分配(它決定了實(shí)現(xiàn)映射功能的邏輯)映射函數(shù):1IR[1..0]0

狀態(tài)ADD1、AND1、JMP1和INC1→1000、1010、1100和1110映射邏輯VS-CPU的微序列控制器狀態(tài)地址FETCH10000(0)FETCH20001(1)FETCH30010(2)ADD11000(8)ADD21001(9)AND11010(10)AND21011(11)JMP11100(12)INC11110(14)VS-CPU的微序列控制器二、

生成正確序列、設(shè)計(jì)映射邏輯并設(shè)計(jì)控制有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的微代碼狀態(tài)地址SEL下址FETCH10000(0)00001FETCH20001(1)00010FETCH30010(2)1XXXXADD11000(8)01001ADD21001(9)00000AND11010(10)01011AND21011(11)00000JMP11100(12)00000INC11110(14)00000生成正確的微代碼序列:為了無(wú)條件轉(zhuǎn)移到一種具體的狀態(tài),微序列控制器通過(guò)地址域和選擇域來(lái)提供狀態(tài)的地址例如:FETCH1→FETCH20號(hào)單元:SEL=0ADDR=00010號(hào)單元對(duì)應(yīng)于狀態(tài)FETCH1SEL=0使微序列控制器從地址域得到它的下一地址把地址域置為0001,使它轉(zhuǎn)到狀態(tài)FETCH2所對(duì)應(yīng)的單元。FETCH3必須映射到正確的執(zhí)行周期,所以要求SEL=1,表示采用映射地址。VS-CPU的微序列控制器用水平微代碼生成微操作9個(gè)狀態(tài)下共有9個(gè)微操作(巧合),需要9個(gè)bit來(lái)表示各自是否發(fā)生(0-不發(fā)生;1-發(fā)生)VS-CPU的微操作及它們的助記符見(jiàn)右表二、

生成正確序列、設(shè)計(jì)映射邏輯并設(shè)計(jì)控制有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的微代碼助記符微操作ARPCARPCARDRARDR[5..0]PCINPCPC+1PCDRPCDR[5..0]DRMDRMIRDRIRDR[7..6]PLUSACAC+DRANDACAC^DRACINACAC+1VS-CPU的微序列控制器用水平微代碼生成微操作二、

生成正確序列、設(shè)計(jì)映射邏輯并設(shè)計(jì)控制有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的微代碼狀態(tài)地址SELARPCARDRPCINPCDRDRMIRDRPLUSANDACIN下址FETCH10000(0)01000000000001FETCH20001(1)00010100000010FETCH30010(2)1010001000XXXXADD11000(8)00000100001001ADD21001(9)00000001000000AND11010(10)00000100001011AND21011(11)00000000100000JMP11100(12)00001000000000INC11110(14)00000000010000在所有的狀態(tài)中,ARDR和IRDR的值是相同的。用一個(gè)輸出AIDR來(lái)驅(qū)動(dòng)這兩個(gè)微操作。AIDR組合了兩個(gè)微操作AR←DR[5..0]

和IR←DR[7..6]。VS-CPU的水平微代碼VS-CPU的微序列控制器狀態(tài)地址SELARPCAIDRPCINPCDRDRMPLUSANDACIN下址FETCH10000(0)0100000000001FETCH20001(1)0001010000010FETCH30010(2)101000000XXXXADD11000(8)0000010001001ADD21001(9)0000001000000AND11010(10)0000010001011AND21011(11)0000000100000JMP11100(12)0000100000000INC11110(14)0000000010000用水平微代碼生成微操作二、

生成正確序列、設(shè)計(jì)映射邏輯并設(shè)計(jì)控制有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的微代碼優(yōu)化后的VS-CPU的水平微代碼VS-CPU的微序列控制器二、

生成正確序列、設(shè)計(jì)映射邏輯并設(shè)計(jì)控制有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的微代碼控制信號(hào)微操作ARLOADARPCvAIDRPCLOADPCDRPCINCPCINDRLOADDRMACLOADPLUSvANDACINCACINIRLOADAIDRALUSELANDMEMBUSDRMPCBUSARPCDRBUSAIDRvPCDRvPLUSvANDREADDRM用水平微代碼生成微操作VS-CPU的微序列控制器二、

生成正確序列、設(shè)計(jì)映射邏輯并設(shè)計(jì)控制有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的微代碼43512體系簡(jiǎn)介指令執(zhí)行與流水線非常簡(jiǎn)單CPU(VS-CPU)CISCRISC內(nèi)容提要CISCCISC結(jié)構(gòu)追求的目標(biāo)強(qiáng)化指令功能,減少程序的指令條數(shù),以達(dá)到提高性能的目的。增強(qiáng)指令功能主要是從以下幾個(gè)方面著手:面向目標(biāo)程序增強(qiáng)指令功能面向高級(jí)語(yǔ)言的優(yōu)化來(lái)改進(jìn)指令集面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)改進(jìn)指令集CISC指令集結(jié)構(gòu)的功能設(shè)計(jì)面向高級(jí)語(yǔ)言的優(yōu)化改進(jìn)指令集例如:循環(huán)在程序中占有相當(dāng)大的比例,所以在指令上提供專(zhuān)門(mén)的支持。循環(huán)控制部分通常用3條指令完成:一條加法指令一條比較指令一條分支指令設(shè)置循環(huán)控制指令,用一條指令完成上述3條指令

12面向高級(jí)語(yǔ)言的優(yōu)化實(shí)現(xiàn)來(lái)改進(jìn)指令集增強(qiáng)對(duì)高級(jí)語(yǔ)言和編譯器的支持高級(jí)語(yǔ)言程序的編譯因?yàn)檎Z(yǔ)義差距導(dǎo)致一些問(wèn)題;編譯器本身比較復(fù)雜編譯生成的目標(biāo)代碼比較難以達(dá)到很好的優(yōu)化高級(jí)語(yǔ)言與一般的機(jī)器語(yǔ)言的語(yǔ)義差距非常大對(duì)源程序中各種高級(jí)語(yǔ)言語(yǔ)句的使用頻度進(jìn)行統(tǒng)計(jì)與分析,對(duì)使用頻度高、執(zhí)行時(shí)間長(zhǎng)的語(yǔ)句,增強(qiáng)有關(guān)指令的功能,加快這些指令的執(zhí)行速度,或者增加專(zhuān)門(mén)的指令,可以達(dá)到減少目標(biāo)程序的執(zhí)行時(shí)間和減少目標(biāo)程序長(zhǎng)度的目的。增強(qiáng)系統(tǒng)結(jié)構(gòu)的規(guī)整性,減少系統(tǒng)結(jié)構(gòu)中的各種例外情況。針對(duì)高級(jí)語(yǔ)言和編譯器的特點(diǎn)進(jìn)行調(diào)整面向目標(biāo)程序增強(qiáng)指令功能處理機(jī)工作狀態(tài)和訪問(wèn)方式的切換。存儲(chǔ)管理和信息保護(hù)。進(jìn)程的管理和切換。進(jìn)程的同步與互斥,信號(hào)的管理等。面向操作系統(tǒng)的優(yōu)化改進(jìn)指令集操作系統(tǒng)和計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)是緊密聯(lián)系的,操作系統(tǒng)的實(shí)現(xiàn)在很大程度上取決于系統(tǒng)結(jié)構(gòu)的支持。指令集對(duì)操作系統(tǒng)的支持主要有:支持操作系統(tǒng)的有些指令屬于特權(quán)指令,一般用戶(hù)程序是不能使用的。43512體系簡(jiǎn)介指令執(zhí)行與流水線非常簡(jiǎn)單CPU(VS-CPU)CISCRISC內(nèi)容提要RISCCISC指令集結(jié)構(gòu)存在的問(wèn)題

各種指令的使用頻度相差懸殊:據(jù)統(tǒng)計(jì):只有20%的指令使用頻度比較高,占運(yùn)行時(shí)間的80%,而其余80%的指令只在20%的運(yùn)行時(shí)間內(nèi)才會(huì)用到。使用頻度高的指令也是最簡(jiǎn)單的指令。RISC指令集結(jié)構(gòu)的功能設(shè)計(jì)X86常用指令統(tǒng)計(jì)執(zhí)行頻度排序80x86指令指令執(zhí)行頻度(占執(zhí)行指令總數(shù)的百分比)1load22%2條件分支20%3比較16%4store12%5加8%6與6%7減5%8寄存器-寄存器間數(shù)據(jù)移動(dòng)4%9調(diào)用子程序1%10返回1%合計(jì)95%指令集龐大復(fù)雜占用了大量的芯片面積(CPU芯片總面積的一半以上),給VLSI設(shè)計(jì)造成很大的困難;CISC問(wèn)題執(zhí)行速度慢許多指令由于操作繁雜,其CPI值比較大,執(zhí)行速度慢。采用這些復(fù)雜指令有可能使整個(gè)程序的執(zhí)行時(shí)間反而增加。不利于流水線由于指令功能復(fù)雜,規(guī)整性不好,不利于采用流水技術(shù)來(lái)提高性能。RISC的設(shè)計(jì)原則指令條數(shù)少而簡(jiǎn)單。只選取使用頻度很高的指令,在此基礎(chǔ)上補(bǔ)充一些最有用的指令。采用簡(jiǎn)單而又統(tǒng)一的指令格式,并減少尋址方式;指令字長(zhǎng)都為32位或64位。指令的執(zhí)行在單個(gè)機(jī)器周期內(nèi)完成。(采用流水線機(jī)制)只有l(wèi)oad和store指令才能訪問(wèn)存儲(chǔ)器,其他指令的操作都是在寄存器之間進(jìn)行。(即采用load-store結(jié)構(gòu))大多數(shù)指令都采用硬連邏輯來(lái)實(shí)現(xiàn)。強(qiáng)調(diào)優(yōu)化編譯器的作用。充分利用流水線技術(shù)來(lái)提高性能。32個(gè)64位通用寄存器(GPRs)R0,R1,…,R31也被稱(chēng)為整數(shù)寄存器R0的值永遠(yuǎn)是032個(gè)64位浮點(diǎn)數(shù)寄存器(FPRs)F0,F(xiàn)1,…,F(xiàn)31用來(lái)存放32個(gè)單精度浮點(diǎn)數(shù)(32位),也可以用來(lái)存放32個(gè)雙精度浮點(diǎn)數(shù)(64位)。存儲(chǔ)單精度浮點(diǎn)數(shù)(32位)時(shí),只用到FPR的一半,其另一半沒(méi)用。MIPS的寄存器MIPS指令集結(jié)構(gòu)0104050203立即數(shù)字段和偏移量字段均為16位立即數(shù)尋址與偏移量尋址將0作為偏移量寄存器間接尋址通過(guò)把R0(其值永遠(yuǎn)為0)作為基址寄存器來(lái)完成16位絕對(duì)尋址存儲(chǔ)器是按字節(jié)尋址的,地址為64位字節(jié)尋址所有存儲(chǔ)器訪問(wèn)都必須是邊界對(duì)齊的邊界對(duì)齊MIPS數(shù)據(jù)尋址I類(lèi)指令包括所有的load和store指令、立即數(shù)指令、,分支指令、寄存器跳轉(zhuǎn)指令、寄存器鏈接跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。MIPS指令集結(jié)構(gòu)Load指令訪存有效地址:Regs[rt]+immediate從存儲(chǔ)器取來(lái)的數(shù)據(jù)放入寄存器rtStore指令訪存有效地址:Regs[rt]+immediate要存入存儲(chǔ)器的數(shù)據(jù)放在寄存器rt中MIPS指令集結(jié)構(gòu)立即數(shù)指令Regs[rt]←Regs[rs]opimmediate分支指令轉(zhuǎn)移目標(biāo)地址:Regs[rs]+immediate,rt無(wú)用寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接轉(zhuǎn)移目標(biāo)地址為Regs[rs]MIPS指令集結(jié)構(gòu)R類(lèi)指令包括ALU指令、專(zhuān)用寄存器讀/寫(xiě)指令、MOVE指令等。ALU指令:

Regs[rd]←Regs[rs]functRegs[rt]func為具體的運(yùn)算操作編碼J類(lèi)指令包括跳轉(zhuǎn)指令、跳轉(zhuǎn)并鏈接指令、自陷指令、異常返回指令。在這類(lèi)指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址。MIPS指令集結(jié)構(gòu)ALU指令舉例寄存器-寄存器型(RR型)指令或立即數(shù)型算術(shù)和邏輯操作:加、減、與、或、異或和移位等指令舉例指令名稱(chēng)含義DADDU R1,R2,R3無(wú)符號(hào)加Regs[R1]←Regs[R2]+Regs[R3]DADDIU R4,R5,#6加無(wú)符號(hào)立即數(shù)Regs[R4]←Regs[R5]+6LUI R1,#4把立即數(shù)裝入到一個(gè)字的高16位Regs[R1]←032##4##016DSLL R1,R2,#5邏輯左移Regs[R1]←Regs[R2]<<5DSLTR1,R2,R3置小于If(Regs[R2]<Regs[R3])Regs[R1]←1elseRegs[R1]←0MIPS指令集結(jié)構(gòu)下一節(jié):64位系統(tǒng)《計(jì)算機(jī)系統(tǒng)》課程教學(xué)組2025年春季學(xué)期《計(jì)算機(jī)系統(tǒng)》64位系統(tǒng)《計(jì)算機(jī)系統(tǒng)》課程教學(xué)組2025年春季學(xué)期43512從32位到64位數(shù)據(jù)與指令信息訪問(wèn)與數(shù)據(jù)操作程序的控制小結(jié)內(nèi)容提要I386&IA32IA64INTEL&HPAlpha處理器

X64AMDItaniumINTEL1985從32位到64位1990199219992001IA32EM64TINTEL642006從32位到64位字長(zhǎng)限制了微處理器能力增長(zhǎng)32位字長(zhǎng)能尋址的地址空間為4GB,即一個(gè)程序最多只能有效使用到4GB的內(nèi)存字長(zhǎng)限制了數(shù)據(jù)處理與計(jì)算越來(lái)越多的計(jì)算任務(wù)要求更大的數(shù)據(jù)運(yùn)算空間和數(shù)據(jù)表示范圍計(jì)算技術(shù)的發(fā)展要求更大的字長(zhǎng)從32到64是沿用字長(zhǎng)翻倍傳統(tǒng)的選擇05040301通用目的寄存器從8個(gè)擴(kuò)展到16個(gè)盡可能使用條件傳送來(lái)實(shí)現(xiàn)條件操作,具有更好的分支性能指針與長(zhǎng)整型為64位;整數(shù)算術(shù)運(yùn)算支持8、16、32、64位數(shù)據(jù)類(lèi)型浮點(diǎn)操作使用基于寄存器的指令集X86-64的特點(diǎn)02大部分程序狀態(tài)可以保存在寄存器而不是棧43512從32位到64位數(shù)據(jù)與指令信息訪問(wèn)與數(shù)據(jù)操作程序的控制小結(jié)內(nèi)容提要X86-64的數(shù)據(jù)類(lèi)型C聲明Intel類(lèi)型匯編后綴X86-64大小IA32大小char字節(jié)b11short字w22int雙字l44longint四字q84longlongint四字q84char*四字q84float單精度s44double雙精度d88longdouble擴(kuò)展精度t10/1610/12*

longdouble在x86-64系統(tǒng)中分配16個(gè)字節(jié),在IA32系統(tǒng)中分配12個(gè)字節(jié),但均只實(shí)際使用最低位的10個(gè)字節(jié)。X86-64的數(shù)據(jù)對(duì)齊X86-64中的數(shù)據(jù)結(jié)構(gòu)與IA32遵循同樣規(guī)則數(shù)組、結(jié)構(gòu)、聯(lián)合都是劃分成對(duì)應(yīng)長(zhǎng)度的塊,塊中保存各自元素。更嚴(yán)格的對(duì)齊標(biāo)準(zhǔn)任何K字節(jié)的數(shù)據(jù)起始地址必須是K的倍數(shù):數(shù)據(jù)類(lèi)型對(duì)齊位置short2字節(jié)邊界int4字節(jié)邊界long8字節(jié)邊界double8字節(jié)邊界longdouble16字節(jié)邊界X86-64的指令longintsimple_l(longint*xp,longinty){ longintt=*xp+y; *xp=t; returnt;}simple_l:pushl %ebpmovl %esp,%ebpmovl 8(%ebp),%edxmovl12(%ebp),%eaxaddl (%edx),%eaxmovl %eax,(%edx)popl %ebpretIA32simple_l:movq %rsi,%raxaddq (%rdi),%raxmovq %rax,(%rdi)retX86-64指針與長(zhǎng)整型都是64位寄存器位64位:%rxx無(wú)需使用棧幀,沒(méi)有棧幀準(zhǔn)備與退出指令參數(shù)傳送都是通過(guò)寄存器,無(wú)需訪問(wèn)內(nèi)存43512從32位到64位數(shù)據(jù)與指令信息訪問(wèn)與數(shù)據(jù)操作程序的控制小結(jié)內(nèi)容提要X86-64通用寄存器共16個(gè):傳統(tǒng)的8個(gè):%rax~%rsi(變成64位)加上新增的%r8~%r15所有通用寄存器都可以訪問(wèn)低32位、低16位和低8位%rax,%rcx,%rdx和%rbx的第二個(gè)字節(jié),即:%ah,%ch,%dh和%bh,依然可以由單字節(jié)操作數(shù)的指令直接訪問(wèn)沒(méi)有幀指針(棧底)寄存器,%rbp因此可以作為通用寄存器數(shù)據(jù)傳送指令指令效果描述movabsqI,RR

I傳送絕對(duì)四字movS,DD

S傳送movq傳送四字movsS,DD

SignExtend(S)符號(hào)擴(kuò)展傳送movsbq符號(hào)擴(kuò)展字節(jié)傳送四字movswq符號(hào)擴(kuò)展字傳送四字movslq符號(hào)擴(kuò)展雙字傳送四字movzS,DD

ZeroExtend(S)零擴(kuò)展傳送movzbq零擴(kuò)展字節(jié)傳送四字movzwq零擴(kuò)展字傳送四字pushqSR[%rsp]R[%rsp]–8M[R[%rsp]]S進(jìn)棧四字popqDD

M[R[%rsp]]R[%rsp]R[%rsp]+8出棧四字算術(shù)指令增加了在四字(64位)上進(jìn)行運(yùn)算的指令,后綴為qaddq,subq,leaq

等等結(jié)果的位數(shù)不同導(dǎo)致指令對(duì)寄存器不同操作產(chǎn)生32位結(jié)果的指令(addl),目的寄存器高32位置零產(chǎn)生16位和8位結(jié)果的指令(addw或addb),只改變16位或8位目的寄存器不同大小操作數(shù)混合的操作,GCC會(huì)選擇對(duì)應(yīng)的指令組合依據(jù)操作數(shù)大小,向上對(duì)齊;并使用對(duì)應(yīng)的指令后綴乘法與除法有類(lèi)似IA32的擴(kuò)展操作來(lái)實(shí)現(xiàn)128位的操作均采用類(lèi)似[%rdx]:[%rax]的方式來(lái)保存乘積或者被除數(shù)43512從32位到64位數(shù)據(jù)與指令信息訪問(wèn)與數(shù)據(jù)操作程序的控制小結(jié)內(nèi)容提要程序控制增加了在四字上進(jìn)行比較(cmp)和測(cè)試(test)的指令,后綴為q循環(huán)與分支的實(shí)現(xiàn)基本類(lèi)似,主要區(qū)別在于參數(shù)傳遞(有無(wú)棧幀

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論