版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章緒 MAC累加器 MAC加法器 MAC掩碼寄存器 RAM址寄存器 ROM址寄存器 1.9.3器中整數(shù)數(shù)據(jù)格式的組 第2章尋址方 第3章指令集概 第4章整型用戶指 第5章MAC用戶指 第6章EMAC用戶指 第7章浮點(diǎn)運(yùn)算單元(FPU)用戶指 第8章超級(jí)用戶()指 MOVE MOVE MOVEto MOVEto 第9章指令格 10.2指令 第11章異常處 概 管理員/用戶堆棧指針(A7和 附錄AS記錄輸出格 S記錄內(nèi) S記錄類(lèi) S記錄創(chuàng) 表1-1CCR位描 表1-2FPCR域的描 表1-3FPSR域描 表1-4MACSR域描 表1-5MACSR域描 表1-6設(shè)備使用的管理員寄存 表1-7狀態(tài)域描 表1-9MBAR域描 表1-10整數(shù)數(shù)據(jù)格 表1-11實(shí)數(shù)格式概 表1-12D0處理器配置域描 表1-13D1處理器配置域描 表2-1指令字格式領(lǐng)域定 表2-2.立即操作數(shù)定 表2-3有效尋址方式和種 表3-1符號(hào)規(guī) 表3-2數(shù)據(jù)傳輸操作格 表3-3程序控制指令格 表3-4整數(shù)算術(shù)指令格 表3-5雙值浮點(diǎn)型操作格 表3-6雙值浮點(diǎn)型操 表3-7單值浮點(diǎn)型操作格 表3-8單值浮點(diǎn)型操 表3-9邏輯操作格 表3-10移位操作格 表3-11位操作指令格 表3-12系統(tǒng)控制操作指 表3-13緩存保護(hù)操作格 表3-14ColdFire用戶指令集概 表7-1有關(guān)FPSR域的描 表7-2FPSREXC 表7-3FPCC編碼 表7-4浮點(diǎn)型條件測(cè) 表7-5FPCREXC位異常可用或不可用的結(jié) 表7-6設(shè)計(jì)模板的不同 表7-10數(shù)據(jù)格式編 表8-1狀態(tài) 表8-2狀態(tài) 表8-3ColdFireCPU的空間分 表9-1操作碼映射 表10-1用戶模式下指令PST/DDATA細(xì) 表10-2用戶模式下多累加器指令PST/DDATA 表10-3用戶模式下浮點(diǎn)型指令PST/DDATA 表10-4數(shù)字標(biāo)記與FPU操作數(shù)格式指 表10-5模式下指令PST/DDATA細(xì) 表11-1異常向量分 表11-2格式/向量 表11-3異常優(yōu)先 表11-7可能的操作數(shù)錯(cuò) 表11-12不精確舍入模式 表A-1S記錄的組成部 圖1-1ColdFire系列的用戶編程模 圖1-2條件碼寄存器 圖1-4浮點(diǎn)型控制寄存器 圖1-5浮點(diǎn)型狀態(tài)寄存器 圖1-6MAC單元編程模 圖1-7.MAC狀態(tài)寄存器 圖1-8EMAC編程模 圖1-9MAC狀態(tài)寄存器 圖1-10EMAC分?jǐn)?shù)隊(duì) 圖1-12加法器0和1的擴(kuò)展 圖1-13加法器2和3的擴(kuò)展 圖1-14管理員編程模 圖1-15.狀態(tài)寄存器 圖1-16向量基址寄存器 圖1-17MMU基址寄存 圖1-18模塊址寄存器 圖1-19規(guī)格化數(shù)據(jù)格 圖1-20零格 圖1-21無(wú)窮大格 圖1-22非數(shù)值格 圖1-23非規(guī)格化的數(shù)據(jù)格 圖1-25數(shù)據(jù)寄存器中整型數(shù)據(jù)的組織形 圖1-26地址寄存器中地址的組織形 圖1-27器的尋址方 圖1-28器整型操作數(shù)的組織形 圖1-30D1處理器配置信 圖2-1指令字的一般格 圖2-2指令字的具體格 圖2-3數(shù)據(jù)寄存器直接尋 圖2-4地址寄存器直接尋 圖2-5地址寄存器間接尋 圖2-6帶后自增的地址寄存器間接尋 圖2-7帶前自減的地址寄存器間接尋 圖2-8帶前自減的地址寄存器間接尋 圖2-9帶8位偏移的比例變址地址寄存器間接尋 圖2-10帶偏移的程序計(jì)數(shù)器間接尋 圖2-11帶8位偏移的比例變址程序計(jì)數(shù)器間接尋 圖2-12短地址尋 圖2-12短地址尋 圖2-14立即數(shù)尋址方 圖2-15堆棧從高地址到低地 圖2-16堆棧從低地址到高地 圖7-1浮點(diǎn)型狀態(tài)寄存器 圖11-1異常堆棧結(jié) 圖A-1組成S記錄的五個(gè)部 圖A-2.S1記錄的發(fā) 1ColdFireColdFire系處理器)ISA_Revision,并被目(如ISA_A和ISA_B等)來(lái)描述。分保留了從M68k系列繼承而來(lái)的用戶模式編程模型。ColdFire系列的發(fā)展,用戶和工具開(kāi)發(fā)者的輸入,以及內(nèi)部性能分析,表明ISA的改進(jìn)能夠增強(qiáng)性能和代碼密集度。因此,在基本的指令集架構(gòu)上,不同ColdFire處理器內(nèi)核中得以實(shí)現(xiàn)。此外,某些可選ISA擴(kuò)展進(jìn)行設(shè)計(jì)的特定應(yīng)用領(lǐng)域。例如,硬件ISA改進(jìn)版本例如ISA_A+,它在主要改進(jìn)版的基礎(chǔ)上整合了其他版本的可選指令。
這些寄存器用于位、字節(jié)(8位、字(16位)以及長(zhǎng)字(32位)的操作。它們還A7將作為硬件的堆棧指針。CCR,從而顯示指令執(zhí)行的結(jié)果。程序位[3:0]5,擴(kuò)展位,是多精度計(jì)算的操作數(shù)。V3版處理器在CCR中增加了位7,作為分支預(yù)測(cè)位。 68K/ColdFire系列來(lái)講,浮點(diǎn)型型數(shù)據(jù)寄存器和整型數(shù)據(jù)寄存器類(lèi)似。64位或置零操作會(huì)使得FP0-FP7變成正數(shù)的特性,而不是任何非數(shù)值類(lèi)型(NANs)。當(dāng)這個(gè)寄存器被時(shí),F(xiàn)PU不會(huì)產(chǎn)生異常。────────異常使能字節(jié)————1-4浮點(diǎn)型控制寄存器位域—0987-7—65-3-—節(jié)(EXC)和浮點(diǎn)型異常產(chǎn)生字節(jié)(AEXC)。用戶可以讀/FPSR位。大多數(shù)浮點(diǎn)型指令都可修改FPSR。FPSRFMOVEFRESTORE指令來(lái)加載數(shù)據(jù)。處理器復(fù)位—31272625—NZI—II—1-5浮點(diǎn)型狀態(tài)寄存器1-3FPSR位域—NZ零I—987-765432-—FPUFPU開(kāi)始運(yùn)行之前,32FPIAR被加載為指令的程序計(jì)數(shù)器中的地址。如果出現(xiàn)FPU異常,中斷處理機(jī)制可以通過(guò)清除FPIAR?!?2MAC狀態(tài)寄存器·32MAC掩碼寄存器 MAC MAC MAC掩碼寄存器1-6MAC單元編程模型74380—NZVC1-7.MAC狀態(tài)寄存器位域—7-76543-3N2Z零1V0C數(shù)的低16位就被加載到該寄存器中。當(dāng)它時(shí),高16位被強(qiáng)制設(shè)成全1。當(dāng)被指令使用時(shí),該寄存器和指定的操作數(shù)地址作與操作。這樣,MASK保證了16位固定范圍內(nèi)。該特性簡(jiǎn)化了對(duì)以下功能的·432位加法器32 MAC MAC MAC MAC MAC
MAC計(jì)時(shí)寄存器圖1-8EMAC編程模式 —NZV1-5EMACMACSR位域—7-76543-3N2Z零1V0C1-10EMAC在分?jǐn)?shù)模式操作時(shí)加法器及其擴(kuò)展字所包含的數(shù)據(jù)。擴(kuò)展乘積的高8位是乘積結(jié)果的40位的符號(hào)擴(kuò)展字節(jié)。88888累加器低位擴(kuò)展字節(jié)累加器低位擴(kuò)展字節(jié)881-11顯示了EMAC在有符號(hào)或無(wú)符號(hào)的整數(shù)模式操作時(shí)加法器及其擴(kuò)展字所包無(wú)符號(hào)模式,擴(kuò)張乘積的高8位為088X888
32位的加法擴(kuò)展寄存器(ACCext01,ACCEXT23)48位的加法器的值在保存1-12顯示了ACC0和ACC1被加載到一個(gè)寄存器中時(shí)如何保存。參考圖1-10和圖1-11有關(guān)擴(kuò)展字節(jié)中數(shù)據(jù)的信息。 ACC1擴(kuò)展字節(jié)ACC0擴(kuò)展節(jié)節(jié)1-1201的擴(kuò)展1-13顯示了ACC0和ACC11-10和圖1-11有關(guān)擴(kuò)展字節(jié)中數(shù)據(jù)的信息。 ACC3擴(kuò)展字節(jié)ACC2擴(kuò)展節(jié)節(jié)1-1323的擴(kuò)展MAC掩碼寄存器到寄存器中。當(dāng)時(shí),高16被強(qiáng)制處理成1。當(dāng)被使用時(shí),該寄存器和指定的操作數(shù)地址作與操作。這樣,MASK保證操作數(shù)16位的固定范圍內(nèi)。該特征最小化了對(duì)篩選,循環(huán)或其MAC,MASK的值被有選擇性地包含到所有器有效地址的運(yùn)算中。ColdFire控寄存器。管理員編程模式包括了對(duì)用戶可用的寄存器以及圖1-14列出的寄存器: 19 MMU基址寄存器 ROM基址寄存器0 ROM基址寄存器1 RAM基址寄存器0 RAM基址寄存器1 圖1-14管理員編程模塊××××ifIf××××××××××ifif××××××××××××ifif設(shè)備參考手冊(cè)來(lái)判斷寄存器是否被使用。一些管理員寄存器只有在虛擬管理單元(MMU)被應(yīng)用時(shí)才會(huì)使用(―ifMMU‖)。一些管理員寄存器只有在指令集是ISA_A+時(shí)才會(huì)使用(―ifIAS_A+‖)。狀態(tài)寄存器,如圖1-15,保存處理器狀態(tài),中斷優(yōu)先碼和其他控制狀態(tài)。管理員 條件碼T—SM—I—XNZVC1P位只使用在V3
1-15.狀態(tài)寄存器1-7位T—SM—I7-ISA_A架構(gòu)支持單個(gè)堆棧指針(A7)。A7的初始值是從復(fù)位異常向量中加載,地址ifSR[S]=
A7=OTHER_A7=A7=的偏移加到存取向量表的寄存器中。VBR[19-0]用0填充。 ——1-16向量基址寄存器ColdFire處理器執(zhí)行時(shí),位的功能和位置可變化。信息,可參考特定的設(shè)備或的用戶手冊(cè)。活動(dòng)進(jìn)程分配的8位標(biāo)示符,有效地充當(dāng)了32位虛擬地址的擴(kuò)展。這樣虛擬40可參考特定的設(shè)備或的用戶手冊(cè)。存取控制寄存器(ACR[0:3])給四個(gè)用戶定義的區(qū)間定義屬性。ACR0和ACR1用中,位的功能和位置可變化。信息,可參考特定的設(shè)備或的用戶手冊(cè)。間在內(nèi)部數(shù)據(jù)總線的有效地址運(yùn)算中具有最高的優(yōu)先權(quán)(也即MMUBAR優(yōu)先級(jí)比RAMBAR0高M(jìn)MUBAR、RAMBAR、ROMBAR取屬性。MMUBAR只在設(shè)備有MMU時(shí)可用。信息,可參考特定的設(shè)備或的 —V位—0VRAM址寄存器RAM址寄存器決定內(nèi)部SRAM模塊的址以及類(lèi)型的映射。每個(gè)RAMBAR包括一個(gè)址,寫(xiě)保護(hù)位,地址空間掩碼位以及一個(gè)使能位。RAMColdFire2,10RAMBAR。在ColdFire處理器執(zhí)行時(shí),位的功能和位置可變化。信息,可參考特定的設(shè)備或ROM址寄存器ROMBAR寄存器決定內(nèi)部ROM模塊的址以及類(lèi)型的映射。每個(gè)ROMBAR包括一個(gè)址,寫(xiě)保護(hù)位,地址空間掩碼位以及一個(gè)使能位。ROMColdFire2,10ROMBAR。在管理員級(jí)的模塊址寄存器,如圖1-18,詳細(xì)介紹了址和可用的內(nèi)部外設(shè)的存取類(lèi)型。MBAR可以通過(guò)一個(gè)作為讀寫(xiě)寄存器的調(diào)試模塊來(lái)讀寫(xiě);只有調(diào)試模塊可以讀MBAR。所有內(nèi)部外設(shè)占用一個(gè)大小為4K的可重定位地址塊。MBAR用地址空間域來(lái)描述特定的地址空間。信息,可參考特定的設(shè)備或的用戶手冊(cè)。 118 ——V圖1-18模塊址寄存器1-9MBAR位—8-87—6543210V整數(shù)單元支持操作數(shù)格式,如表1-10。整數(shù)單元操作數(shù)可以駐留在寄存器,1-10位181632FPU的操作數(shù)數(shù)據(jù)格式。FPU支持三種帶符號(hào)的整數(shù)格式(字節(jié),字和長(zhǎng)字FPU還支持單精度和雙精度二進(jìn)制浮點(diǎn)型數(shù)格式,滿足IEEE-754的要求。和非規(guī)格化的數(shù)據(jù)。規(guī)格化的數(shù)據(jù)類(lèi)型,如圖1-19,給定的格式從不使用最大或最小雙精度的規(guī)格化數(shù)據(jù),整數(shù)位數(shù)為1,指數(shù)可為0。||───────尾數(shù)的符號(hào),01-19零指數(shù)分?jǐn)?shù)||───────尾數(shù)的符號(hào),01-20度和雙精度的無(wú)窮大,分?jǐn)?shù)是0。見(jiàn)圖1-21。=分?jǐn)?shù)||───────尾數(shù)的符號(hào),01-21量和數(shù)組或者代表用戶自定義的數(shù)據(jù)類(lèi)型。見(jiàn)圖1-22。==|───────尾數(shù)的符號(hào),01-22如果操作的輸入是NANFPU產(chǎn)生的默認(rèn)的NANFPUNAN,NAN10。用戶產(chǎn)生一個(gè)NAN,所有非0的位可以到尾數(shù)和標(biāo)志位中。和雙精度的非規(guī)格化的數(shù)值,隱式的整數(shù)位為0。見(jiàn)圖1-23。指數(shù)=|───────尾數(shù)的符號(hào),0結(jié)果就變成0。1-11參00sefsef符號(hào)11有偏指數(shù)8分?jǐn)?shù)03.41.22.21.44.9·帶符號(hào)整數(shù)補(bǔ)碼:這種格式,N位的操作數(shù)值落在2(N1operand2(N1。二進(jìn)制小數(shù)·補(bǔ)碼,符號(hào)部分:NNNvalue(1 )Ni
(i12
1-24這個(gè)格式可以表示范圍在1operand12(N1對(duì)于字和長(zhǎng)字,最大的負(fù)數(shù)可以表示為-1,內(nèi)部分別表示成0x8000和0x 最大的正數(shù)字是0x7FFF(1215);最大的正數(shù)長(zhǎng)字是0x7FFFFFFF(1231)。分不變也不被使用。一個(gè)整型長(zhǎng)字的最低位的地址是0,最是31。圖1-25顯示了 8787 01010字節(jié)(8位字(16位)1-26顯示了地址寄存器中地址的組織形式。0160未定義的位。這些特殊的位為了以后的兼容讀寫(xiě)的值都保持0。對(duì)應(yīng)最高字中的最高字節(jié)的地址。低位的字地址為N+2,最低位為N+3(見(jiàn)圖1-27。最低地址(最近的0x 780長(zhǎng)字字字長(zhǎng)字字字···圖1-27器的尋址方址字節(jié)、在址字節(jié)中選擇的位操作數(shù)的位號(hào)。最是7。765321765321 址msb字節(jié)n msb字節(jié)n
整數(shù) 整數(shù) 整數(shù)長(zhǎng) 整數(shù)長(zhǎng) 圖1-28器整型操作數(shù)的組織形
ColdFire硬件配置信息在系統(tǒng)復(fù)位后被加載到D0D1通用寄存器。硬件配置信BDM讀出這些寄存器中的V2V3中并不支持,從那以后的11001111 1100111100= 值版本=0b0010,ColdFire版本2版本=0b0011,ColdFire版本=0b0100,ColdFire版本=0b0101,ColdFireD0的高12為復(fù)位值直接描述了ColdFire版本,如“CF2V2,“CF3”指V3等。如果處理器中有MAC,則該位設(shè)置。0=沒(méi)有MAC 1=有MACMCF5202,MCF5204,MCF5206不包括整數(shù)除法操作0=DIV1=如果處理器中有EMAC,則該位設(shè)置。0=沒(méi)有EMAC 1=有EMAC0=沒(méi)有 1=有0=1=0=1=ISA_REV=0b0010,ISA_BISA_REV=0b0011,ISA_CDBG_REV=0b0000,Debug_ADBG_REV0b1000,Debug_A+DBG_REV=0b0001,Debug_BDBG_REV0b1001,Debug_B+DBG_REV=0b0010,Debug_CDBG_REV=0b0011,Debug_DDBG_REV=0b0100,Debug_E值CLSZ0b00,16CLSZ0b01,32字節(jié)緩存線長(zhǎng)度ICAS=0b01,指令緩存直接映射ICSZ=0b0000,沒(méi)有指令緩存ICSZ0b0001512字節(jié)ICSZ=0b00101K字節(jié)ICSZ=0b00112K字節(jié)ICSZ=0b01004K字節(jié)ICSZ=0b01018K字節(jié)ICSZ0b011016K字節(jié)ICSZ0b100064K字節(jié)這四位定義了SRAM0大小SRAM0SZ=0b0000,沒(méi)有SRAM0SRAM0SZ0b0001,SRAM0512字節(jié)SRAM0SZ0b0010,SRAM01K字節(jié)SRAM0SZ0b0011,SRAM02KSRAM0SZ0b0100,SRAM04KSRAM0SZ=0b0101,SRAM08K字節(jié)SRAM0SZ=0b0110,SRAM016K字節(jié)SRAM0SZ0b0111,SRAM032K字節(jié)SRAM0SZ=0b1000,SRAM064K字節(jié)這四位定義了ROM0大小ROM0=0b0000,沒(méi)有ROM0ROM0=0b0001,ROM0512字節(jié)ROM0=0b0010,ROM01K字節(jié)ROM0=0b0011,ROM02K字節(jié)ROM0=0b0100,ROM04K字節(jié)ROM0=0b0101,ROM08K字節(jié)ROM0=0b0110,ROM016K字節(jié)ROM0=0b0111,ROM032K字節(jié)ROM0=0b1000,ROM064K字節(jié)MbusMBSZ=0b00,32位系統(tǒng)總線寬度MBSZ=0b01,64位系統(tǒng)總線寬度MBSZ0b00,MBSZ0b01,數(shù)據(jù)緩存直接映射DCSZ=0b0000,沒(méi)有數(shù)據(jù)緩存DCSZ0b0001512字節(jié)DCSZ=0b00101K字節(jié)DICSZ0b00112K字節(jié)DCSZ=0b01004K字節(jié)DCSZ=0b01018K字節(jié)DCSZ0b011016K字節(jié)SRAM1SZ=0b0000,沒(méi)有SRAM1SRAM1SZ=0b0001,SRAM1512字節(jié)SRAM1SZ=0b0010,SRAM11K字節(jié)SRAM1SZ=0b0011,SRAM12K字節(jié)SRAM1SZ=0b0100,SRAM14K字節(jié)SRAM1SZ=0b0101,SRAM18K字節(jié)SRAM1SZ=0b0110,SRAM116K字節(jié)SRAM1SZ0b0111,SRAM132K字節(jié)SRAM1SZ=0b1000,SRAM164K字節(jié)ROM1=0b0001,ROM1512ROM1=0b1000,ROM164KROM1=0b1001,ROM1128KV3,V4(以前用來(lái)說(shuō)明“ColdFire2”等。在ISA_xColdFire版本后有注解。2計(jì)數(shù)器相對(duì)尋址方式,可依據(jù)數(shù)據(jù)方式來(lái)分類(lèi)。ColdFire系列指令由13個(gè)字構(gòu)成。圖2-1表示了指令的一般組成。指令的第一個(gè)字,叫作字段,用來(lái)指定該指令的長(zhǎng)度、有效尋址方式及要執(zhí)行的操作。余下的或浮點(diǎn)型指令。ColdFire系列指令的字長(zhǎng)只限于這3種尺寸:16、3248位。操作字段(一個(gè)字,用于指定操作和模式擴(kuò)展字(如果有的話擴(kuò)展字(如果有的話指令字(見(jiàn)圖2-2。模式域編碼用于決定尋址方式。寄存器域包含通用的寄存器數(shù)字或一個(gè)當(dāng)模式域=111時(shí)用以選擇尋址方式的數(shù)值。某些變址(Index)或間接尋址,會(huì)XXXXXXXXXX0域0= 1=0=地址錯(cuò)誤異 1=長(zhǎng)00= 01=10 置。指示通過(guò)以下3個(gè)方式來(lái)指定操作數(shù)的位置:地址形 匯編格 EA模式 EA寄存器 寄存器擴(kuò)展字 地址形 匯編格 EA模式 EA寄存器 寄存器擴(kuò)展字 地址形 EA=匯編格 EA模式 EA寄存器 寄存器擴(kuò)展字
地址形 EA=(An);An=An+Size(尺寸匯編格 EA模式 EA寄存器 寄存器擴(kuò)展字 操作數(shù)長(zhǎng)度 (1、2或 EA=(An)-Size;An=An-EA-EA00操作數(shù)長(zhǎng)度 (1、2或 地址形 EA=(An)-+匯編格 -EA模式 EA寄存器域 偏移量────符號(hào)擴(kuò)展這種尋址方式,需要一個(gè)包含變址寄存器指示器的擴(kuò)展字、可能的比例和一個(gè)8地址形 EA=(An)+((Xi)*比例因子)+有符號(hào)擴(kuò)展 (d8,An,Xi,尺寸*比EA模式 EA寄存器 寄存器擴(kuò)展字 0 0 +變址寄存器 符號(hào)擴(kuò)展0比例 比例X+0中的地址(PC)16位有符號(hào)整型偏移量。PC的值在地址形成后將變成PC+2,這時(shí)的PC就是指令操作字段的地址。這是一個(gè)只讀的程序部件。地址形 EA=(PC)+匯編格 (d16,EA模式 EA寄存器 +0的PC就是指令操作字段的地址。這是一個(gè)只讀的程序部件。當(dāng)使用該方式時(shí),用戶必地址形 EA=(PC)+((Xi)*比例因子)+有符號(hào)擴(kuò)展 (d8,PC,Xi,尺寸*比EA模式 EA寄存器 偏移量────符號(hào)擴(kuò)展變址寄存器 符號(hào)擴(kuò)展比例 比例 位地址在使用之前會(huì)先被擴(kuò)展成有符號(hào)32位地址。地址形 給定的匯編格 EA模式 EA寄存器 擴(kuò)展字
圖2-12短地址尋100—00圖2-12短地址尋2-2.字產(chǎn) 給定操作匯編語(yǔ) EA模式 EA寄存器 擴(kuò)展字?jǐn)?shù) 1或2-14式用于沒(méi)有確定尺寸的器操作數(shù)。型結(jié)合的尋址方式。表2-3列舉出了各個(gè)有效尋址方式以及它們的類(lèi)型的要素。器×—號(hào)————×××—××號(hào)××××××號(hào)×××(d16,×××號(hào)8位偏移的××××號(hào)×××—8位偏移的×××—長(zhǎng)號(hào)××××××——號(hào)××——考慮。進(jìn)一步地,為保證在異常處理時(shí)A7這種對(duì)齊,ColdFire體系在處理異常時(shí)使用(自由···(自由···圖2-15堆棧從高地址到低地(自由···(自由···圖2-16堆棧從低地址到高地3本章通過(guò)介紹飛思匯編語(yǔ)言的語(yǔ)法和符號(hào),來(lái)簡(jiǎn)要描述ColdFire系列指令集3-1+-*/~&|⊥→If<條件>Else操作Dx,Rx,變址寄存器,可被用作地址或數(shù)據(jù)寄存器;32偏移值,n(如d1616位的偏移lsb,條件碼寄存器(狀態(tài)寄存器的低字節(jié)ic,dc,*CNVXZ—<ea>x,ACC,MACEMACFPx,MOVEFMOVE指令及它們的尋址方式,是傳輸和存取地址或數(shù)據(jù)的最基本方法。MOVE指令可以從器到器、器到寄存器、寄存器到器之間傳輸?shù)刂凡僮鞑疟粓?zhí)行。相比于常規(guī)的傳送指令,有些外加的數(shù)據(jù)傳輸指令,如MOV3Q、MOVEM、MOVEQ、MVS、MVZ、LEA、PEA、LINKUNLK,有特殊的功能。其中MOV3Q、MVS和MVZ是ISA_B對(duì)原先指令集的擴(kuò)展。做移入/移出操作。當(dāng)操作數(shù)移入浮點(diǎn)數(shù)寄存器時(shí),F(xiàn)SMOVEFDMOVE會(huì)對(duì)數(shù)值做單精度或雙精度的舍入。FMOVEM3-2列出了在DFPy,FPx#列表,DL<ea>y→W#<數(shù)據(jù)LLMOVEtoMACcr,DxCCR,DxMACcr作為MAC控制寄存器的情況:ACCx,CCext01,ACCext23,MACSR,#列表,L#<數(shù)據(jù)LSP-4→SP;數(shù)指令(TSTFTST),設(shè)置整數(shù)或浮點(diǎn)數(shù)條件碼以便其他程序和系統(tǒng)控制指令執(zhí)行。NOP強(qiáng)制內(nèi)部管道同步。TPF3-3概括了這些<<B<<#<數(shù)據(jù)L(SP)B T— F—永假 可用于數(shù)據(jù)運(yùn)算。CLRMUL、DIV和REM指令包括:算提供了支持。對(duì)于具有可選MAC或EMAC部件的,MAC和MSAC指令是很3-43-4中,X表示CCRX位。度在LL源+目的+CCR[X]#<數(shù)據(jù)(<ea>y(&MASK)) (<ea>y(&MASK))LLL0-目的-CCR[X]LLIfCCR[V]==ThenifDx[31]==Then ElseElseDx[31:0]ISA_LL目的-源-CCR[X]FADDFSUB等指令。對(duì)于這些操作,第一個(gè)操作數(shù)可以位于器中,結(jié)果將保存在第二個(gè)操作數(shù)指定的寄存器中。FPU算術(shù)操作都支持所有的數(shù)據(jù)3-6FPx<Functioin>Source→3-6NEG等)對(duì)應(yīng)的功能不同的是,它的源操作數(shù)和目的操作數(shù)是可被指定的。操作處理3-7列出了單值型指令的通用格式。表3-8列出了它的可用操作。FPy,FPxSourcr→<Functioin>→3-8AND、OR、EORNOT是處理長(zhǎng)字長(zhǎng)整型數(shù)據(jù)的邏輯操作指令。相似的立即數(shù)ANDI、ORIEORI3-93-9LL<數(shù)據(jù)L&L^#<數(shù)據(jù)L^LLL|#<數(shù)據(jù)L|ASR、ASL、LSRLSL指令提供了左/右兩種移位操作。所有移位指令都只適用寄存器中指定(移位數(shù)為對(duì)64取模的結(jié)果。CCR中的C位和X位。3-10#<數(shù)據(jù)LLCCR[X,C]←(Dx<<Dy)←#<數(shù)據(jù)LLmsb→(Dx>>Dy)#<數(shù)據(jù)LLCCR[X,C]←(Dx<<Dy)←#<數(shù)據(jù)LL0→(Dx>>Dy)WMSWofDx←→LSWofBTST、BSET、BCLRBCHG是位操作指令。位操作指令可以被應(yīng)用在寄存器和器。位號(hào)可以用立即數(shù),或由數(shù)據(jù)寄存器指定。寄存器操作數(shù)長(zhǎng)度為32位,存8位。另外,BITREV、BYTEREVFF132位寄存器中的數(shù)據(jù)提供了的功能。表3-11給出了位操作指令的小結(jié)。在#<數(shù)據(jù)~(目的指定位的值)→CCR[Z]→目#<數(shù)據(jù)L#<數(shù)據(jù)l#<數(shù)據(jù)l這種指令包含了指令和陷阱指令,以及利用到或能修改CCR的指令。FSAVEFRESTORE保存或恢復(fù),浮點(diǎn)型運(yùn)算單元在上下文切換選擇時(shí),程序可見(jiàn)的那部分信息。表3-12給出了這些指令的小結(jié)。停止處理器(同步管道 SR,WMOVELMOVEtoW源寄存器→SRDy或 LL2(SP)→SR;4(SP)→PCSP+8→SP根據(jù)格式調(diào)整???<數(shù)據(jù)立即數(shù)→SR;STOP(道#<數(shù)據(jù)WL行(同步管道PSTSP-4→SP;PC→(SP)→PC;SP→(SP)SP-2→SP偏移→(SP);(VBR+0X10)→#<向量SRS1SP-4→SP;→(SP)SP-2→SP/偏移→(SP)(PC,當(dāng)nic,dc,bc,指令集。回顧主要的ISA如下定義:·ISA_C·FPU:采用原始的ColdFire指令集架構(gòu)的浮點(diǎn)型單元(FPU)·MAC:采用原始的ColdFire指令集架構(gòu)的乘法累加單元(MAC)·EMAC_B在L+#<數(shù)據(jù)#<數(shù)據(jù)LL+LLL<數(shù)據(jù)L<數(shù)據(jù)LLDy,Dxmsb→(Dx>>Dy)→CCR[X,C]msb→(Dx>>#<數(shù)據(jù)>)<<L#<數(shù)據(jù)~(目的指定位的值)→#<數(shù)據(jù)~(目的指定位的值)L<<L#<數(shù)據(jù)~(目的指定位的值)L#<數(shù)據(jù)LLL-W#<數(shù)據(jù)L-#<數(shù)據(jù)-目的/L^#<數(shù)據(jù)L^B→W→LB→FPy,FPxDD<DFPx-FPy,FPxDD源+FPx→FPxDFPx/FPxDFPx/DD度FPy,FPxDFPy,FPxDD度L寄存器第一個(gè)邏輯位的偏移→FPy,FPxDFPy,FPxDFPy,FPxLLFPcr可以作為任何浮點(diǎn)控制寄#列表,DD源*FPy,FPxDDD源+FPx→FPxDFPx/源→FPxD度FPy,FPxDFPy,FPxDFPy,FPxDD度DFPx-源LW#<數(shù)據(jù)LLCCR[X,C]←(Dx0#<數(shù)據(jù)LL0→(Dx>>Dy)0→(Dx>>Dy)L (<ea>y(&MASK))→L #<數(shù)據(jù)LL器 MACcr,CCR,DxW當(dāng)MACcrMAC#<數(shù)據(jù)#列表,L#<數(shù)據(jù)L (<ea>y(&MASK))L 源*器LLLL源|#<數(shù)據(jù)L立即數(shù)|器LPSTL(SP)LIfCCR[V] ElseDx[31:0]BLL-L#<數(shù)據(jù)#<數(shù)據(jù)LL-L-CCR[X]WB#<數(shù)據(jù)L#<向量SRS1SP-4→SP;號(hào)Ax→SP;(SP)源→DDATAic,dc,bc,CACRFPUFPU態(tài)FPU狀態(tài)→FPU架MOVESR,WMOVELMOVEtoW源→SRDy#<數(shù)據(jù)源 LL2(SP)→SR;4(SP)→PC;#<數(shù)據(jù)W#<數(shù)據(jù)LWDMREG本章對(duì)整個(gè)ColdFire指令集架構(gòu)及其相應(yīng)版本給出了簡(jiǎn)明的參考。為了方便,表3-16按字母順序給出了所有指令及其相應(yīng)版本的簡(jiǎn)明列表。更為詳細(xì)的描述請(qǐng)參見(jiàn)表3-14(3-13頁(yè))和表3-15(3-18頁(yè)。CMC××××××××××××××××××××××××××××××××字××××××××××××××××××××××××××××××字××××××××××××××××××××××××××××××壓入緩存或可使×××××××××××××××××××××××××××××××××移出浮點(diǎn)數(shù)據(jù)積×FMOVE從浮點(diǎn)控制寄存×FMOVE從浮點(diǎn)指令地址×FMOVE從浮點(diǎn)狀態(tài)寄存× 移進(jìn)浮點(diǎn)控制寄× 移進(jìn)浮點(diǎn)指令地× 移進(jìn)浮點(diǎn)狀態(tài)寄×移出多個(gè)浮點(diǎn)數(shù)××××恢復(fù)內(nèi)部浮點(diǎn)狀態(tài)×保存內(nèi)部浮點(diǎn)狀態(tài)××××CPU××××獲得指令陷××××××××××××××××××××××LSL,××××乘和加放到第一××××乘法和加法結(jié)果存到第一個(gè)累加×快速移動(dòng)位3××從累加器中移出××××××××MOVEto××MOVE×××MOVE從累加器0和××從累加器2和××MOVE從條件碼寄存器××××MOVE從MAC××× 把MAC狀態(tài)寄存器的值移到中×××MOVE從MAC×××MOVE從狀態(tài)寄存器中××××MOVE從用戶棧指針寄××× ××× ×××× 移入條件碼寄存器×××× 移入MAC××× 移入MAC×××MOVEto×××× ×××××××××××××××××××乘法和減法存入法存入第二個(gè)累××××乘法和減法移入減法移入到第二×××××××××帶符號(hào)擴(kuò)展的轉(zhuǎn)移××××××××××××××××××××××××××××把有效地址壓入××××××××帶符號(hào)的除法余數(shù)××××無(wú)符號(hào)的除法余數(shù)××××××××××××××××××或加載狀態(tài)××加載狀態(tài)寄存器××××××××××××××××××××××××××××××××××××××××××××××寫(xiě)數(shù)據(jù)控制寄存器××××寫(xiě)調(diào)試控制寄存器××××4本節(jié)敘述ColdFire系列的整型用戶指令。為了便于,每個(gè)指令的詳細(xì)討論按ColdFire3章“就指令集定義的具
=以只是單個(gè)長(zhǎng)字。指令的模式源和目的操作數(shù)分別是哪個(gè)以及他們的數(shù)據(jù)長(zhǎng)度。Dx模式用于目的操作數(shù)是數(shù)據(jù)寄存器的情況,目的<ea>x模式對(duì)于數(shù)據(jù)寄存器是不可用的。此外,ADDA用于目的操作數(shù)是地址寄存器的情況。ADDIADDQ用于
********* 1101字——<ea>y+Dx→——Dy+<ea>x→數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)————數(shù)數(shù)數(shù)數(shù)數(shù)寄存器數(shù)寄存器數(shù)——————
=1101111目的寄存器域──指定目的寄存器Ax數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù) Add
=目的操作數(shù),并結(jié)果到目的數(shù)據(jù)寄存器Dx。操作數(shù)尺寸被定為長(zhǎng)字的長(zhǎng)度。立即
********* 0000011010000目的寄存器域──指定目的寄存器Dx Add
=作數(shù)之前先用0來(lái)填補(bǔ)為長(zhǎng)字。注意,當(dāng)需加到地址寄存器時(shí),條件碼不受影響。
********* 0101010—————— Add
+CCR[X]=
********** 通常CCR[Z]ADDX操作開(kāi)始前經(jīng)過(guò)明確規(guī)劃而置位,允許在多精度操作的完1101110000Dx域──指定目的數(shù)據(jù)寄存器Dx。寄存器Dy域──指定源數(shù)據(jù)寄存器Dy。 AND
=為長(zhǎng)字。地址寄存器中的地址可能操作數(shù)。Dx模式用于目的操作數(shù)是數(shù)據(jù)寄存器的情況,目的<ea>x模式對(duì)于數(shù)據(jù)寄存器是ANDI
—**00 —**00 1100字——<ea>y+Dx→——Dy+<ea>x→數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)————數(shù)數(shù)數(shù)數(shù)數(shù)—————— AND
=對(duì)立即數(shù)與目的操作數(shù)實(shí)行“與”操作,結(jié)果保存在目的數(shù)據(jù)寄存器Dx中。操作
—**00 —**00 0000001010000目的寄存器域──指定目的數(shù)據(jù)寄存器Dx
(d表示方向,L=Dx的位進(jìn)行移位,按照指定好的方向進(jìn)行(左或右。80對(duì)于ASL,操作數(shù)被左移,移位數(shù)等于被移動(dòng)位置的號(hào)碼。從0ASR,操作數(shù)右移,被移動(dòng)位置的號(hào)碼等于移位數(shù)。從低位按順序移出的位轉(zhuǎn)到進(jìn)位和擴(kuò)展位中;符號(hào)位(最)被按順序移入
***0* ***0*
11101000i/r1,此域數(shù)據(jù)寄存器Dy包含轉(zhuǎn)換計(jì)數(shù)(64為模i/r域寄存器域──指定要轉(zhuǎn)換的數(shù)據(jù)寄存器Dx Branch
如果條件為真,則PC+dn→Bcc.sz=字節(jié)、字、長(zhǎng)字長(zhǎng)度(ISA_B開(kāi)始支持長(zhǎng)字長(zhǎng)度PCBcc2PC和目的字)0xFF,三十二位的置換(指令之后的長(zhǎng)字)將執(zhí)行。因?yàn)榘宋坏闹脫Q域是0x00,下一立即指令的枝將執(zhí)行十六位的置換。條件碼指定C、N、VZ分別代表CCR[C]、CCR[N]、CCR[V]和CCR[Z]的條件零C位CZ于N&V|N&N&V&Z|N&V&C&于Z|N&V|NN&V|NNZNVV01108 TestaBitand
~(目的位數(shù))→目的的<位數(shù)BCHG.szDy,<ea>x=12寄存器——位于指定的數(shù)據(jù)寄存器中
——*———*—— 000010000100000000———數(shù)數(shù)數(shù)數(shù)————————————0000101式,注意,長(zhǎng)字只在Dx模式里使用,其余模式均使用字節(jié)。數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)—————— TestaBitand
BCLR.szDy,<ea>x=
********* 000010001000000000注意長(zhǎng)字僅用在Dx模式,其余一律使用字節(jié)?!?000110注意長(zhǎng)字僅用在Dx模式,其余模式均使用字節(jié)。數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)—————— BitReverse
=目的數(shù)據(jù)寄存器的內(nèi)容為:翻轉(zhuǎn)位,i.e.Dx[31]=Dx[0]Dx[30]=原Dx[1],……,新Dx[0]=原Dx[31]。0000000011000寄存器域──指定目的數(shù)據(jù)寄存器Dx
PC+BRA.sz=字節(jié)長(zhǎng)度,字長(zhǎng)度,長(zhǎng)字長(zhǎng)度(ISAB開(kāi)始支持長(zhǎng)字長(zhǎng)度0x00,十六位的置換(指令之后的字)0xFF,三十二位的置換(指令之后的長(zhǎng)字)將執(zhí)行。因?yàn)榘宋坏闹脫Q域是0x00(置零,下一立即指令的枝將執(zhí)行十六位的置換。011000008 TestaBitand
BSET.szDy,<ea>x=
—*———*——— 000010001100000000注意長(zhǎng)字僅用在Dx模式,其余一律使用字節(jié)?!?000111注意長(zhǎng)字僅用在Dx模式,其余一律使用字節(jié)。數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)—————— Branchto
SP-4→SP;nextPC→(SP);PC+BSR.sz=字節(jié)、字、長(zhǎng)字長(zhǎng)度(ISA_B開(kāi)始支持長(zhǎng)字長(zhǎng)度011000018 Testa
BTST.szDy,<ea>x=
——*———*—— 000010000000000000意長(zhǎng)字僅用在Dx模式,其余一律使用字節(jié)?!?000100意長(zhǎng)字僅用在Dx模式,其余一律使用字節(jié)。數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)—— ByteReverse
=new=oldnew=oldnew=oldnew=old0000001011000寄存器域──指定目的數(shù)據(jù)寄存器Dx Clearan
CLR.sz=
—0—010001000010—00:字 ─01: ─10:長(zhǎng) ─11:翻數(shù)——數(shù)數(shù)——————數(shù)數(shù)數(shù)
=字節(jié)、字、長(zhǎng)字長(zhǎng)度(ISA_B開(kāi)始支持字節(jié)長(zhǎng)度、字長(zhǎng)度用CMPA,當(dāng)源操作數(shù)是立即數(shù)時(shí)則使用CMPI。
—**** —****
字—數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù) Compare首先出現(xiàn)于ISA_A
=字、長(zhǎng)字長(zhǎng)度(ISA_B開(kāi)始支持字長(zhǎng)度
—**** —****
字—數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)
=字節(jié)、字、長(zhǎng)字長(zhǎng)度(ISA_B開(kāi)始支持字節(jié)長(zhǎng)度、字長(zhǎng)度操作近似于CMP,適用操作數(shù)是立即數(shù)時(shí)。操作數(shù)尺寸可以是字節(jié)、字、長(zhǎng)
—***—**** 00001100000—00:字 ─01:字—10:長(zhǎng) ─11:翻
DIVS.W<ea>y,Dx 32位Dx或Dx的16位<ea>y(16r:16q)DIVS.L<ea>y,Dx 32位Dx或Dx的32位<ea>y32q(q表示商,r表示余數(shù)=為單位的操作,目的操作數(shù)是長(zhǎng)字的而源操作數(shù)是字長(zhǎng)度的。16位的商在低字節(jié)中而16位的余數(shù)在高字節(jié)中。注意余數(shù)的正負(fù)與被除數(shù)相同。對(duì)以長(zhǎng)字為單位的操作,目的操作數(shù)與源操作數(shù)是長(zhǎng)字長(zhǎng)度的。32位的商存放于目的操作符中。如果想知道長(zhǎng)字操作中的余數(shù),可以使用REMS指令。
—***0 —***0
寄存器域──指定目的寄存器Dx數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)01001100010100000000數(shù)——數(shù)數(shù)數(shù)——————————數(shù)——
DIVU.W<ea>y,Dx 32位Dx或Dx的16位<ea>y(16r:16q)DIVU.L<ea>y,Dx 32位Dx或Dx的32位<ea>y32q(q表示商,r表示余數(shù)=
—***0 —***0
寄存器域──指定目的寄存器Dx數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)01001100010000000000數(shù)——數(shù)數(shù)——————————數(shù)數(shù)——
當(dāng)源是立即數(shù)時(shí)使用EORI。
—00—00 110 數(shù)數(shù)數(shù)——————數(shù)數(shù)數(shù)數(shù)
對(duì)目的操作數(shù)與立即數(shù)進(jìn)行“或”操作,結(jié)果在目的操作符中。操作數(shù)尺寸被
—00 —00
0000101010000
=變成長(zhǎng)字,把符號(hào)位到左邊。當(dāng)EXT操作把一個(gè)字節(jié)擴(kuò)展為字時(shí),指定的數(shù)據(jù)寄位到數(shù)據(jù)寄存器的31-8位。
——00 01001000000 FindFirstOnein
=然后這個(gè)數(shù)據(jù)寄存器記下那個(gè)位的偏移。如果源數(shù)據(jù)是0,那將得到32的偏移量。OldNew0x80000x00000x40000x00000x20000x00000x00000x00000x00000x00000x00000x0000
—00—00 0000010011000目的寄存器
SP4SPPCSP迫使堆棧以長(zhǎng)字排列)SP-2→SP;SR→(SP)SP2SP;SP)(VBR+0x10)→PC執(zhí)行這條指令造成“”異常處理,它的操作模式是0x4AFC。0100101011111100
0100111011數(shù)數(shù)數(shù) Jumpto
SP4SPnextPC(SP);JSRJSR指令當(dāng)被傳送給系統(tǒng)時(shí),就把指令的尺寸為長(zhǎng)字的地址進(jìn)棧,然后程序0100111010————數(shù)————數(shù)數(shù)—— LoadEffective
=0100111————數(shù)————數(shù)數(shù)——
SP-4→SP;Ay→(SP);SP→Ay;SP+dn→=字長(zhǎng)指令,但大多數(shù)匯編器也支持不限定尺寸的LINK指令。0100111001010 Logical
LSd.LDy,Dx(d是方向,L=轉(zhuǎn)換由方向器(LR)給出的目的操作數(shù)的位數(shù)。操作數(shù)尺寸是長(zhǎng)字。CCR[C]800LSR指令把操作數(shù)移入指定移位數(shù)位置數(shù)的右邊。從低位按順序移出的位轉(zhuǎn)到進(jìn)位和擴(kuò)展位中;零被按順序移入。00
***0* ***0*
11101001i/r1,此域數(shù)據(jù)寄存器Dy包含轉(zhuǎn)換計(jì)數(shù)(64為模i/r域寄存器域──指定要轉(zhuǎn)換的數(shù)據(jù)寄存器Dx Move3-BitDate
=數(shù)被標(biāo)記擴(kuò)展為長(zhǎng)字操作數(shù),所有的32位被轉(zhuǎn)到目的位置。
—**0—**00 1010101數(shù)數(shù)數(shù)——————數(shù)數(shù)數(shù)數(shù) MoveDatefromSourceto
—**00 —**00
XN結(jié)果為負(fù)數(shù)則置位,否則Z結(jié)果為零數(shù)則置位,否則V 011110數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)——————數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)MOVE.B和MOVE.W操作代碼。),( MoveAddressfromSourceto
=00001—01:字節(jié) ─11:字 目的寄存器域─指定目的地址寄存器Ax。數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù) MoveMultiple
后作相應(yīng)增加。寄存器的次序從D0D7,然后從A0A7。 ————寄存器數(shù)————寄存器數(shù)————————————————寄存器數(shù)————寄存器數(shù)——————————與最后一個(gè)被轉(zhuǎn)換的寄存器一致。Mask見(jiàn)下表: Move
的8位域的數(shù)據(jù),在操作字之內(nèi),被擴(kuò)展成有符號(hào)長(zhǎng)字操作數(shù)。
—**00 —**00
01110數(shù)據(jù)域──8位的數(shù)被擴(kuò)展為有符號(hào)的長(zhǎng)字。 MovefromtheConditionCode from from0100001011000寄存器域──指定目的數(shù)據(jù)寄存器Dx MovetotheConditionCode to toMOVE.BDy,CCR
X 操作數(shù)的第4*****N 操作數(shù)的第***** 操作數(shù)的第2 操作數(shù)的第1 操作數(shù)的第00100010011寄存器數(shù)———————————————————— Signed
* 16x16→ 32x32→=32位都被存放在目的數(shù)果的低32位,結(jié)果的高32位被丟棄。
—**00 —**00
寄存器域──指定目的數(shù)據(jù)寄存器Dx寄存器數(shù)——寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)01001100000100000000000寄存器數(shù)——寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)————————————的低32位存入這個(gè)寄存器中。
16x16→ 32x32→32位都被存放在目的數(shù)果的低32位,結(jié)果的高32位被丟棄。
—**00 —**00
寄存器域──指定目的數(shù)據(jù)寄存器Dx寄存器數(shù)——寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)01001100000000000000000寄存器數(shù)——寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)————————————的低32位存入這個(gè)寄存器中。 MovewithSign
MVS.sz目的的31-8位;對(duì)于字操作數(shù),源的15位被到目的的31-16位。
—**0—**00 011110寄存器域──指定數(shù)據(jù)寄存器Dxsize域──指定操作數(shù)的大小。─0:字節(jié)操作 ─1:字操作寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù) Movewith
MVZ.sz
—0*00—0*00 011110寄存器域──指定數(shù)據(jù)寄存器Dxsize域──指定操作數(shù)的大小。─0:字節(jié)操作 ─1:字操作寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)
=0100010010000寄存器域──指定目的數(shù)據(jù)寄存器Dx Negatewith
0CCR[X]
********** 0100000010000寄存器域──指定數(shù)據(jù)寄存器Dx No
無(wú)0100111001110001 Logical
—**00 —**00
0100011010000寄存器域──指定數(shù)據(jù)寄存器Dx 當(dāng)目的是數(shù)據(jù)寄存器時(shí),使用Dx模式,目的<ea>模式對(duì)數(shù)據(jù)寄存器不起作用。
—**00 —**00 1000字——<ea>y|Dx→——Dy|<ea>x→寄存器數(shù)——寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)————寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)寄存器數(shù)——————
在立即數(shù)和目的操作數(shù)上執(zhí)行包括OR在內(nèi)的操作,將結(jié)果存入目的數(shù)據(jù)寄存器兩個(gè)擴(kuò)展字之內(nèi),第一個(gè)擴(kuò)展字為位[15:0],包字;第二個(gè)擴(kuò)展字為位[15:0],
—**00 —**00 0000000010000目的寄存器域──指定數(shù)據(jù)寄存器Dx
SP–4→SP;<ea>y→ ————寄存器數(shù)————寄存器數(shù)寄存器數(shù)——
PST0100101111001100 MCF5202MCF5204和MCF5206
32-bitDx/32-bitea>y?32rinDw(r指余數(shù)Dw被指定為和DxDIVSREMS指令;要確定商的值則使用DIVS指令。指向REMS32位有符號(hào)
—***0 —***0
01001100010000000000數(shù)——數(shù)數(shù)數(shù)數(shù)———————————— Returnfrom
(SP)→PC;SP+4→0100111001110101
IfCCR[V]==thenifDx[31]==0,thenDx[31:0]=0xelseDx[31:0]=elseDx[31:0]is
—**00 —**00
0100110010000寄存器域──指定目的數(shù)據(jù)寄存器Dx
1s0sScc.B零位CZF0于零位CZF0于&于NT真1V010111000寄存器域──指定目的數(shù)據(jù)寄存器Dx
-令的模式哪個(gè)是源操作數(shù),哪個(gè)是源操作數(shù)。
********* 11001字——<ea>y+Dx→——Dy+<ea>x→數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)——數(shù)數(shù)數(shù)數(shù)數(shù)寄存器數(shù)寄存器數(shù)——————
1001111目的寄存器域──指定目的地址寄存器Ax數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)
Dx。操作數(shù)的大小被指定為長(zhǎng)字。注意:立即數(shù)包括在兩個(gè)擴(kuò)展字之內(nèi),第一個(gè)擴(kuò)展字為位[15:0],包字;第二個(gè)擴(kuò)展字為位[15:0],包括低字。
***** *****
0000000010000
=
********* 0101110數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)
***** *****
SUBX操作開(kāi)始之前CCR[Z]會(huì)通過(guò)編程來(lái)明確,從而允許在多倍精度操作1001110000寄存器Dy域──指定源數(shù)據(jù)寄存器域Dy。
寄存器[31:16]?寄存器
—**00 —**00
0100100001000寄存器域──指定目的數(shù)據(jù)寄存器Dx TestandSetan
CCR;1→測(cè)試并設(shè)置有效地址域的字節(jié)操作數(shù)。指令測(cè)試操作數(shù)的當(dāng)前值并適當(dāng)?shù)刂付–CR[N]和CCR[Z]。TAS也按順序指定操作數(shù)的。操作數(shù)使用讀-改-寫(xiě)的周期68K系列處理器不同,Dx不支持尋址模式。
—**00 —**00 0100101011————數(shù)數(shù)——————數(shù)數(shù)數(shù)
TPFPC+2→TPF.W#<data>PC+4→PCTPF.L#<data>PC+6→NOP指令相比,TPF是首選的,因?yàn)镹OP指令也同步處理器傳遞途徑,在多循環(huán)后得到結(jié)果。if(a==b)z=cmp.l ;comparea==beq.b ;branchifmovq.l ;z=bra.blabel1 movq.l ;z=對(duì)于這種類(lèi)型的次序,BRAWTPF.W或TPF.L操作模式代替(依靠在10指令的長(zhǎng)度,既然這樣,TPF.W操作模式是適用的。在首標(biāo)志位的指令由于TPF指令擴(kuò)展成字而被有效地隱藏,完全被消除了。0101000111111
1→S-BitofSP–4→SP;nextPC→(SP);SP–2→SR→(SP);SP–2→SP;Format/Offset→(SP);(VBR+0x80+4*n)→PC(nTRAPvector數(shù)目引起TRAPvector>中斷。TRAP40x80上得到中斷地址。中斷地址加到VBR上來(lái)中斷向量表。如果有16個(gè)向量,向量域的值可以從0-15。斷處理結(jié)束時(shí),SR將更新,T位被,S位被置位。010011100100
—**00 —**00
數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)數(shù)
Ax→SP;(SP)→Ax;SP+4→0100111001011 WritetoDebug
ColdFire調(diào)試模塊中的數(shù)據(jù)來(lái)在11111011——————————5MAC ACC+(Ry*Rx){<<|>>}SF→ Ry,{U,L},Rx.{U, ***
10100000————0——————0x8至0xF分別代表A0至A7。注意:字操作數(shù)的第6位是寄存器數(shù)字域的最。0x80xF分別代表A0至A7。sz域──指定輸入操作數(shù)的大小。 —0:字 —1:長(zhǎng)字—00:無(wú) —01:結(jié)果<<1 —10:保留 U/Lx──指定源寄存器操作數(shù)Rx的哪16位被作為字操作數(shù)來(lái)使用—0:低 —1:高—0:低 —1:高 ACC+(Ry*Rx){<<|>>}SF→與該操作同時(shí)執(zhí)行的是,從由<ea>y32位的操作數(shù),將其值賦給目的寄存器Rw。若指定使用掩碼寄存器,則<ea>y操作數(shù)在被該指令使用 ***
1000x8至0xF分別代表A0至A7。注意:字操作數(shù)的第6位是寄存器數(shù)字域的最?!?————————————0 Movefrom 將累加器中一個(gè)32位的值移到一個(gè)通用寄存器Rx中。當(dāng)操作的是實(shí)型時(shí)(MACSR[F/I]=1),若MACSR[S/U]被置,則累加器的內(nèi)容舍入到16位的值并且到101000011000 Movefromthe from101010011000 MovetotheMACMASK from101011010000 MovefromtheMACSRtothe MACSRto MACSR
0***0 0***0
1010100111000000 Moveto toMOVE.LRy,ACC **0
1010000100————-—————————————— MovetotheMACStatus to toMOVE.LRy,MACSR——— —— 1010100100————-—————————————— MovetotheMACMASK to toMOVE.LRy,MASK1010110100————-—————————————— Multiply ACC-(Ry*Rx){<<|>>}SF→MSAC.sz ***
10100000————1——————0x8至0xF分別代表A0至A7。注意:字操作數(shù)的第6位是寄存器數(shù)字域的最。0x80xF分別代表A0至A7?!?: —1:長(zhǎng)—00:無(wú) —01:結(jié)果<<1 —10:保留 U/Lx──指定源寄存器操作數(shù)Rx的哪16位被作為字操作數(shù)來(lái)使用—0:低 —1:高—0:低 —1:高 ACCx-(Ry*Rx){<<|>>}SF→與該操作同時(shí)執(zhí)行的是,從由<ea>y32位的操作數(shù),將其值賦給目的寄存器Rw。若指定使用掩碼寄存器,則<ea>y操作數(shù)在被該指令使用 ***
1010x8至0xF分別代表A0至A7。注意:字操作數(shù)的第6位是寄存器數(shù)字域的最。————-————————————06EMAC本章包括了原EMAC指令以及首次出現(xiàn)在B版本的EMAC定義中的四個(gè)乘法累加單元指令(MAAAC、MASAC、MSAAC和MSSAC。 MultiplyandAddtoFirst
ACCx+(Ry*Rx){<<|>>}SF→ACCxACCw+(Ry*Rx){<<|>>}SF→照定義進(jìn)行轉(zhuǎn)換后送到累加器中ACCx,同時(shí)也將其到另外的累加器ACCw中***** *****
V
10100位00————0—最01第7位是最低位。這兩位的值按照下表所示來(lái)指定累加器的值:字?jǐn)U展字操作符000110110x80xF分別代表A0至A7。0 ACCx+(Ry*Rx){<<|>>}SF→MAC.sz***** *****
若有一結(jié)果或加法溢出位被置位或 10100位00————0—最————0x8至0xF分別代表A0至A7。注意:字操作數(shù)的第6位是寄存器數(shù)字域的最。ACC域──指定第目標(biāo)累加器ACCx。字?jǐn)U展位的第4位是最,字操作數(shù)的第7位是最低位。這兩位的值按照下表所示指定了累加器的值:字?jǐn)U展字操作符000110110x80xF分別代表A0至A7。0 ACCx+(Ry*Rx){<<|>>}SF→與該操作同時(shí)執(zhí)行的是,從由<ea>y32位的操作數(shù),將其值賦給目的寄存器Rw。若指定使用掩碼寄存器,則<ea>y操作數(shù)在被該指令使用***** *****
若有一結(jié)果或加法溢出位被置位或 10100位位0最0x8至0xF分別代表A0至A7。注意:字操作數(shù)的第6位是寄存器數(shù)字域的最。字?jǐn)U展字操作01001110————-————————————0 MultiplyandAddto
ACCx+(Ry*Rx){<<|>>}SF→ACCxACCw-(Ry*Rx){<<|>>}SF→***** *****
10100位位00————0—110x8至0xF分別代表A0至A7。注意:字操作數(shù)的第6位是寄存器數(shù)字域的最。第7位是最低位。這兩位的值按照下表所示指定了累加器的值:000110110x80xF分別代表A0至A7。0 MovefromAccumulatorand 0 ACCy,32Rx里,這個(gè)被選定的累加器里的內(nèi)容將在被存放到Rx寄存器內(nèi)后清除。清除操作也會(huì)影響累加器的擴(kuò)展字節(jié),累加可能溢出指示器。累加器的功能十分復(fù)雜,EMAC構(gòu)造功能由MACSR定義。ACC[470]ifMACSR[S/U,F/I ifMACSR[OMC]==thenACC[31:0] /*elseifACC[47:31]==0x0000_0or0xFFFF_1thenACC[31:0]→RxelseifACC[47]==then0x7FFF_FFFF→Rxelse0x8000_0000→Rx ifMACSR[OMC]==thenACC[31:0] /*elseifACC[47:32]==thenACC[31:0]→Rxelse0xFFFF_FFFF→Rx ifMACSR[OMC,S/U,R/T]==000 thenACC[39:8]→RxifMACSR[OMC,S/U,R/T]==001 /*16rnd,32位rndthenACC[39:8]roundedbycontentsof[7:0]→Rx /*不飽和,16then0→ACC[39:24]roundedbycontentsof[23:0]→ifMACSR[OMC,S/U,R/T]==10 ifACC[47:39]==0x00_0or0xFF_1thenACC[39:8]→RxelseifACC[47]==0then0x7FFF_FFFF→Rxelse0x8000_0000→RxifMACSR[OMC,S/U,R/T]==101 Temp[47:8]=ACC[47:8]roundedbycontentsof[7:0]ifTemp[47:39]==0x00_0or0xFF_1thenTemp[39:8]→RxelseifTemp[47]==then0x7FFF_FFFF→Rxelse0x8000_0000→ MovefromAccumulatorand /*飽和,16Temp[47:24]=ACC[47:24]roundedbythecontentsof[23:0]ifTemp[47:39]==0x00_0or0xFF_1then0→Temp[39:24]→elseifTemp[47]==then0x0000_7FFF→Rxelse0x0000_8000→0→ACCx,ACCextx,
———0———0— PAVx 1010011100Movefrom
EMACMACSR定義。下面?zhèn)未a定義了它的操作;ACC[47:0]代表了32位累加器和16位擴(kuò)展字。ifMACSR[S/U,F/I]==00 ifMACSR[OMC]==0thenACC[31:0]→Rx elseifACC[47:31]==0x0000_0or0xFFFF_1thenACC[31:0]→RxelseifACC[47]==0then0x7FFF_FFFF→Rxelse0x8000_0000→RxifMACSR[S/U,F/I]==10 ifMACSR[OMC]==0thenACC[31:0]→Rx elseifACC[47:32]==0x0000thenACC[31:0]→Rxelse0xFFFF_FFFF→Rx if thenACC[39:8]→ifMACSR[OMC,S/U,R/T]==001 /*16rnd,32位rndthenACC[39:8]roundedbycontentsof[7:0]→Rx /*不飽和,16then0→ACC[39:24]roundedbycontentsof[23:0]→ifMACSR[OMC,S/U,R/T]==100 ifACC[47:39]==0x00_0or0xFF_1thenACC[39:8]→RxelseifACC[47]==0then0x7FFF_FFFF→Rxelse0x8000_0000→Rx Temp[47:8]=ACC[47:8]roundedbycontentsof[7:0]ifTemp[47:39]==0x00_0or0xFF_1thenTemp[39:8]→RxelseifTemp[47]==0then0x7FFF_FFFF→Rxelse0x8000_0000→Rx Movefroman ifMACSR[OMC,S/U]==11 /*16Temp[47:24ACC[47:24]roundedbythecontentsof[23:0]ifTemp[47:39]==0x00_0or0xFF_1/*飽和,16 Temp[39:24]→elseifTemp[47]==0then0x0000_7FFF→else0x0000_8000→0→ACCx,ACCextx,
*********V無(wú)影響PAVx無(wú)影響 1010011000 MovefromAccumulator0and1 from01節(jié)的如下表所示。注意:在48位邏輯累加的范圍之內(nèi),LSB的擴(kuò)展字節(jié)的位置取決于EMAC的操作模式(整型相對(duì)與實(shí)型。101010111000 MovefromAccumulator2and3 from from取決于EMAC的操作模式(整型與實(shí)型相對(duì)。[7:101010111000 Movefromthe from101010111000 MovefromtheMACMASK
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職(新能源汽車(chē)技術(shù))汽車(chē)電控系統(tǒng)檢修試題及答案
- 2025年中職葡萄酒文化與營(yíng)銷(xiāo)(酒莊運(yùn)營(yíng)基礎(chǔ))試題及答案
- 2025年高職建筑工程技術(shù)(施工技術(shù)規(guī)范)試題及答案
- 2025年中職口腔技術(shù)(口腔修復(fù)體打磨)試題及答案
- 2025年大學(xué)大四(儀器科學(xué)與技術(shù))智能儀器設(shè)計(jì)綜合評(píng)估試題及答案
- 2025年高職臨高烤乳豬制作(選料與烤制工藝)試題及答案
- 2025年高職遙感技術(shù)應(yīng)用(遙感數(shù)據(jù)處理)試題及答案
- 2025年大學(xué)中外服裝史(服裝史基礎(chǔ))試題及答案
- 2025年高職醫(yī)學(xué)影像技術(shù)(MRI拍攝)試題及答案
- 2025年高職(汽車(chē)檢測(cè)與維修技術(shù))發(fā)動(dòng)機(jī)維修綜合技能測(cè)試試題及答案
- 冬季道路施工應(yīng)對(duì)措施
- 企業(yè)員工培訓(xùn)分層方案
- 2mm土工膜長(zhǎng)絲土工布檢測(cè)報(bào)告合格證
- 新疆烏魯木齊市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)統(tǒng)編版綜合練習(xí)(上學(xué)期)試卷及答案
- DB15T 435-2020 公路風(fēng)吹雪雪害防治技術(shù)規(guī)程
- 五年級(jí)上冊(cè)小數(shù)四則混合運(yùn)算練習(xí)300道及答案
- DL-T5796-2019水電工程邊坡安全監(jiān)測(cè)技術(shù)規(guī)范
- 《民法學(xué)》教學(xué)大綱
- 低壓用戶電氣裝置規(guī)程 DGJ08-100-2003
- 實(shí)驗(yàn)室生物安全培訓(xùn)-課件
- 第章交流穩(wěn)態(tài)電路
評(píng)論
0/150
提交評(píng)論