32位PowerPC構架通用寄存器分析及總結一_第1頁
32位PowerPC構架通用寄存器分析及總結一_第2頁
32位PowerPC構架通用寄存器分析及總結一_第3頁
32位PowerPC構架通用寄存器分析及總結一_第4頁
32位PowerPC構架通用寄存器分析及總結一_第5頁
免費預覽已結束,剩余2頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、32位PowerPC構架通用寄存器分析及總結一第一部分32位PowerPC構架下寄存器概述32位PowerPC構架寄存器模型可以分成三個類級別:UISA,VEAOEA我們根據這三個級別把PowerPC所使用的所有寄存器分為三類:第一類:用戶指令集構架(UISA-UserInstructionSetArchitecture)下所使用的寄存器;第二類:虛擬環境構架(VEA-VirtualEnvironmentArchitecture)下所使用的寄存器;第三類:操作系統環境(OEA-OperatingEnvironmentArchitecture)下所使用的寄存器;PowerPC指令集構架為所有的算

2、術邏輯運算指令定義了“寄存器到寄存器”格式的指令,這些指令的操作數來自或者來自于寄存器,或者來自于指令中的立即數。而對于“三寄存器”格式的指令,PowerPC指令集定義其中一個寄存器用來存目的操作數,另外兩個寄存器用來存放源操作數。這樣的話,存放源操作數的寄存器還可以被其它指令使用,從而減少了某些操作的指令數目。并且對于訪問寄存器,PowerPC構架定義了明確的load和store訪存指令(這是RISC指令集的典型特點)。備注:寄存器中的保留位允許軟件寫任何值(其實就是0或者1),但是讀出來的值,未必是我們寫出來的值。它的值依賴于具體的執行系統。接下來,我們分別來介紹這三類寄存器。第二部分UI

3、SA寄存器集合用戶模式下的寄存器可以被所有的用戶級軟件和特權級軟件所使用,它包含以下的寄存器:32個通用寄存器GPRs(General-purposeregisters):GPR0-GPR3132個浮點寄存器FRPs(Floating-pointregisters):FPR0-FPR311個條件寄存器:CR(Conditionregister);1個XER寄存器;1個LR(Linkregister)寄存器;1個CTR(Countregister)寄存器;1個浮點狀態控制寄存器:FPSCR(Floating-pointstatusandcontrolregister);備注:不管是單精度數還是雙

4、精度數,在浮點寄存器中都是以雙精度格式存儲。示意圖如下:R口14t-eSupwvisorXttVHvraOp«rafmgErtvfronmontAft;hM:«ctur«(OBA)MMUR咕Elfre031EaUiZu$tansMw.飆erfc-jiator4DtfHigRaglslflrivMllicNnlthmiicowigiinUiOfi蚪”1司|1單足o,1MSP|啊Mgg|PiW|PmnaaxS3Ipl3sH源|iPlDCMKfTtimr/D*erwitfiterHrp.tiM,EJrteitHlAcciMBR*»gMr3r-4FABIEjdr

5、<nriarni.叫卬xhptoiitfiFigure2-1.UFSAProgramtningMo4ei-U«r-LevelRosiers2.1 通用寄存器GPRs32個32位通用寄存器主要用來操作整數數據,它們可以作為指令源寄存器和目的寄存器使用,使用起來比較簡單,這里就不再相信介紹2.2 浮點寄存器FPRsPowerPC構架使用32個64位的浮點寄存器,這些寄存器可以在浮點指令中用作源操作數和目的操作數。無論是單精度浮點數還是雙精度浮點數在浮點寄存器中都是以雙精度格式存儲。除了浮點比較指令之外,其他的浮點操作指令都是操作FPRs中的數據,然后把操作結果放入FPRs中,同時把

6、浮點操作的狀態信息存入FPSC珅;而浮點比較指令的結果一般會存放在CR寄存器的CR2字段中。另外對于FPRs同存放在內存中的雙精度輸進行數據轉存時,不需要格式轉換;而對于FPRs和放在在內存中的單精度數進行轉存時需要格式轉換;而且單精度指令操作FPRs中的數據時,必須把FPRs中的雙精度格式的數據轉化成單精度格式,單精度指令才能使用。2.3 CR寄存器32位的CR寄存器可以反映某些操作的結果(比如cmp指令),協助測試和分支轉移指令的執行。CR寄存器用來存放指令執行之后的狀態,該寄存器分為8個字段。分別為CRQCR1,CR%每個字段都由4bit組成。各個字段CRn(n從Q至7)都可以表示響應指

7、令執行的結果:比如整數的加減及邏輯運算,使用CRQ來存放狀態,CRQ的四個bit位的含義如下:CRQ(Q):用來表示LT(小于),當整型指令運算結果為負時置1;CRQ(1):用來表示GT(大于),當整型指令運算結果為正時置1;CRQ(2):用來表示EQ(等于),當整型指令運算結果為Q時置1;CRQ(3):用來表示SO(溢出),當整型指令運算結果溢出時置1;同理浮點數的運算使用CR1來保存運算狀態,保存過程同上。其實比較指令可以使用CR寄存器的全部的CRn(n從Q至7)來保存運算的結果。在使用CR寄存器時,比較指令cmp之后都會有一個條件跳轉指令,比如bc指令。其中cmp指令可以指定由CR寄存器

8、的CRn段來保存結構,cmpi指令就用BF字段來指定CRn字段,一般而言bc指令就會指向cmp中相同的CRn段來決定跳轉。下面的指令用來操作CR寄存器的各個CRn域:1:mtcrf用一個GPR勺值來設置CR寄存器的CRn域;2:mcrf把CR寄存器的一個域CRn拷貝到另一個域CRm3: mcrxr把XER寄存器的bitQ-bit3拷貝到CR寄存器的一個域CRn4:mcrfs把指定的FPSCFW存器的一個域拷貝到指定的CR寄存器的一個域CRn5: CR寄存器的CRQ域存放整數指令的運算結果6: CR寄存器的CR1域存放浮點數指令的運算結果7:可以指定CR寄存器的任何一個域CRn來存放整數指令和浮

9、點數指令的運算結果;6.1.1 對于CR寄存器的CRQ域解釋對于所有的整數指令比如addic.,adni.和andis.等(.表示Rc位置位),指令的執行結果將會反映在CRQ位上。CRQQ:2位根據整數指令的運算結構設定,CR3由XERSQ位拷貝過來,四個bit位的含義上面已經講過。備注:我們不難想到,如果發生溢出,CRQ的前三個bit就沒有參考價值了。6.1.2 對于CR寄存器的CR1域對于所有的浮點運算指令(指令的Rc位置位),CR1將反映浮點運算指令的結果。具體的說CR1Q:3位拷貝自FPSCRQ:3,來反映浮點運算的異常狀態。6.1.3 對于指定的CRn域的解釋對于比較指令而言,它們通

10、常會自己指定一個CRn域來存放比較指令的運算結果。比如對cmpi指令:cmpiBF,L,RA,SI語義:n<-BF表示的數值ifL=Qthena<EXTS(RA)32:63)elsea<(RA)ifa<EXTS(SI)thenc<-Qb1QQ/小于時設置CRn(Q)為1elseifa>EXTS(SI)thenc<0b010/大于時設置CRn(1)為1elsec<-0b001/等于時設置CRn(2)為1CR寄存器中的:4XBF+32:4XBF+35<-c|XER寄存器中SO位/|表示字符連接解釋:將寄存器RA與立即數SI進行比較,然后將比較指

11、令產生的狀態放入CR寄存器的不同字段中,CR寄存器有8個CRn字段(門從0至7),可以有三個bit位的BF段指定。L表示是進行32位還是64的比較。對于e600而言,只有L=0的比較。2.4 FPSCR寄存器FPSCFW存器白各個bit位的作用:1:記錄浮點操作的異常2:記錄浮點操作的結果的類型3:控制浮點操作的回旋模式(roundingmode)4:使能或者禁止異常報告FPSCR0:23是狀態bit位,在浮點指令的執行單元完成時更新;FPSCR24:31是控制位;2.5 XER寄存器XER寄存器是用戶模式寄存器,存放整數運算操作的進位,溢出信息以及特殊加載和存儲指令lswd和stsws傳輸的

12、字節數。XER寄存器有三個有效位(SO-SummaryOverflow,OV-Overflow,CA-Carry)和一個有效字段BytecountSO位:XER0位,該位為1表示算術指令曾經將OV位置1;CR寄存器的SO位就是復制了XER寄存器的SO位,SO位一旦被設置,就不會被?#除,真到程序使用mtspr,mcrxr指令進行清除。OV位:XER1位,表示有符合數的算術運算產生了溢出。CA位:XER2位,表示無符號數運算產生了進位。Bytecount字段:XER25:31存放lswd和stsws傳輸的字節數。2.6 LR寄存器LR寄存器用來存放函數的返回地址,某些轉移指令可以自動的將LR寄存

13、器賦值為該轉移指令所在地址的下一個地址。LR寄存器還可以用作bclr指令的目標地址,來實現長跳轉。示意圖如下:Z952961000051c<pr?int>:237loaoosic21flfOrl,-16(1:1)Z9S100005207cOS02曰6trfIrrO2993001000052410000528909301el000014Oc3t.WstwrO,20(rl)r31,12(rl)3011000052c7c3fOb7Smrr31/rl90S100005303c001000113r0,409fi3031000053306006eSaddic“,1768304100005384

14、S010361b.L10010898<putsplt>3051000053c397f0010add!163061000054080Ob00SluzirQ(til)307100005447cOB03a6mtlrrO30S1000054883cbfffcIwz工31.-4(rll)3091000054c7d615b78mirl,til返回LR寄存器中保310100005504已80002nFblrJT存的0x1000056c311312R口口口口55410000S543139421fffDstiruirl.-lG(rl)314100005587coe0206niflrrO3151000

15、055c90010014stur-0,20(rlj3161000055093el00OcSt-Wr31,12(rl)317100005647c3工Ob?e31S100005684bffftbSIr1000051c-print>319320lOOOOESc10000570387c00030003DO.?a11ruRr3.r0A32110000574397f0010addit1Lr31,器3ZZ1000057880Ob0004Li調用Mim。函數,同時把該指令3Z31000057c7c0803a6制的下一條指令地址0x1000056c放32410000580B3ebfffc11入LR寄存器3

16、Z51O0OO5S47d61Sb?ami3Z6100005868Q0020b3271000058c000181bO*longOxlSltoO3Z9備注:圖中的blr是bclr20,0指令的助記符。2.7 CTR指令CTR寄存器用來保存循環變量,并可以根據bclr的BO操作數來自動進行減1操作。此外CTR寄存器還可用來保存bcctr指令的目標地址,用來實現長調轉。第三部分虛擬環境構架(VEA-VirtualEnvironmentArchitecture)寄存器集虛擬環境工具寄存器集只包含Time-Base寄存器組。示意圖如下:VhrtMiErMrOtim4nlArChllecluht(VEAib

17、UtrutUOh-A«M4K3laMgl*gr4e時FP陰LcPFCRirirr2舊4H.ihE申L*4FscnRRMFHqs1sp(hcoufriandutkKn«giii«re1imlmygi,叩4FtoAq-painl31MgTl>¥日力3R但RilLOin%QII«pr中為5TBLTLlUfir-L9volR”-tKUs4rM«rdt1IOnXtArclilltKluiUtSA*l:口匚»GeiwralHput|xj4r修gH4s<5MMUR«gibtenCdnfiquraiWnH-越1第噫fi

18、1AlUHMtmW*5卬甲爐甲刈印IU1甲142BftfMJUBSTcTPTWMKrDBATiLDBsrar"dbaIsiLDwTiJrm-Dita的巡4Klek-E:.vbtr%stem"wr"aw"TBL一iTBU'1KTknwMDecE4nM*rCteCAMT啟力健,Ejit*mai看姓心見專R*.tr£*nW臺國?.F*bto;p4i->naiiWiD«MgItegtrier修眄I+,用守I-I:CiiEH)f«|Lfl|l«khq加SuprvHor-L*lR聞出tor*Op,ri舊目EnYirqnm審WArchHwmnH口E匐Figure2-9.VEAProqiwnm加門flndUaerLevelRflqisterePlusTimeBawVEA寄存器組可以被所有的處于用戶模式或者系統模式下的軟件所訪問,從VEA寄存器組的示意圖我們可以看出,和UISA寄存器相比。VEA寄存器只是引入了一個64位的結構體,它包含兩個寄存器:TBU(TimeBaseU

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論