freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第2章armthumb微處理器結(jié)構(gòu)及指令系統(tǒng)-power-免費(fèi)閱讀

2025-01-27 16:04 上一頁面

下一頁面
  

【正文】 若協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義指令異常中斷。 調(diào)用子程序 DELAY注意 : 分支指令 BL限制在當(dāng)前指令的 177。助記符 說明 操作 條件碼位置B label 分支指令 PC← label B{cond}BL label 帶鏈接的分支指令 LR← PC4, PC← label BL{cond}BX Rm 帶狀態(tài)切換的分支指令 PC← label,切換處理器狀態(tài) BX{cond}(6). ARM分支指令助記符 說明 操作 條件碼位置B label 分支指令 PC← label B{cond}BL label 帶鏈接的分支指令 LR← PC4, PC← label BL{cond}BX Rm 帶狀態(tài)切換的分支指令 PC← label,切換處理器狀態(tài) BX{cond} 分支指令 —— B指令,該指令跳轉(zhuǎn)范圍限制在當(dāng)前指令的 177。指令格式如下: SMULL{cond}{S} RdLo,RdHi,Rm,Rs (5).乘法指令應(yīng)用示例 : SMLAL R2,R3,R7,R6 。R1=R2R3 MULS R0,R3,R7 。使用 TEQ進(jìn)行相等測試時,常與 EQ、 NE條件碼配合使用。助記符 說明 操作 條件碼位置CMP Rn, operand2 比較指令 標(biāo)志 N、 Z、 C、 V← Rnoperand2 CMP{cond}CMN Rn, operand2 負(fù)數(shù)比較指令 標(biāo)志 N、 Z、 C、V← Rn+operand2 CMN{cond}TST Rn, operand2 位測試指令 標(biāo)志 N、 Z、 C、 V← Rn operand2 TST{cond}TEQ Rn, operand2 相等測試指令 標(biāo)志 N、 Z、 C、 V← Rn ^ operand2 TEQ{cond} 位測試指令 —— TST指令將寄存器 Rn的值與 operand2的值按位作邏輯“ 與 ” 操作,根據(jù)操作的結(jié)果更新 CPSR中的相應(yīng)條件標(biāo)志位,以便后面的指令根據(jù)相應(yīng)的條件標(biāo)志來判斷是否執(zhí)行。指令格式如下: BIC{cond}{S} Rd,Rn, operand2(4). ARM數(shù)據(jù)處理指令: 邏輯運(yùn)算指令應(yīng)用示例 : BIC R1,R1,0x0F 。R0=R00x01,取出最低位數(shù)據(jù) AND R2,R1,R3 。使用 ADC實(shí)現(xiàn) 64位加法 ADC R1,R1,R3 。 R3= R1+R22 助記符 說明 操作 條件碼位置ADD Rd, Rn, operand2 加法運(yùn)算指令 Rd← Rn+operand2 ADD{cond}{S}SUB Rd, Rn, operand2 減法運(yùn)算指令 Rd← Rnoperand2 SUB{cond}{S}RSB Rd, Rn, operand2 逆向減法指令 Rd← operand2Rn RSB{cond}{S}ADC Rd, Rn, operand2 帶進(jìn)位加法 Rd← Rn+operand2+Carry ADC{cond}{S}SBC Rd, Rn, operand2 帶進(jìn)位減法指令 Rd← Rnoperand2(NOT)Carry SBC{cond}{S}RSC Rd, Rn, operand2 帶進(jìn)位逆向減法指令Rd← operand2Rn(NOT)Carry RSC{cond}{S} 減法運(yùn)算指令 —— SUB指令用寄存器 Rn減去 operand2,結(jié)果保存到 Rd中。 數(shù)據(jù)處理指令只能對寄存器的內(nèi)容進(jìn)行操作,而不能對內(nèi)存中的數(shù)據(jù)進(jìn)行操作。 SWP指令應(yīng)用示例:SWP R1,R1,[R0] 。216。 后綴 “!” 表示最后的地址寫回到 Rn中。 LDM為加載多個寄存器; STM為存儲多個寄存器。 注意: /字節(jié)加載是指用符號位加載擴(kuò)展到 32位,無符號 半字加載是指用零擴(kuò)展到 32位; —— 半字讀寫的指定地址必須為偶數(shù),否則將產(chǎn)生不可 靠的結(jié)果。寄存器及移位常數(shù) : 寄存器移位后的值可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。T在用戶模式下無效,不能與前索引偏移一起使用 T。 說明: 所有單寄存器加載 /存儲指令可分為 “字和無符號字節(jié)加載存儲指令 ” “半字和有符號字節(jié)加載存儲指令 。(1).指令格式: 第 2個操作數(shù)LSL移位操作: 0LSR移位操作: 0ASR移位操作:ROR移位操作:RRX移位操作: C 寄存器偏移方式應(yīng)用舉例 :ADD R1, R1, R1, LSL 3 ;; R1=R19SUB R1, R1, R2, LSR 2 ;; R1=R1R24 ARM指令的基本格式如下:(2).條件碼opcode {cond} {S} Rd ,Rn{,operand2} 使用條件碼 “ cond” 可以實(shí)現(xiàn)高效的邏輯操作,提高代碼效率。immed_8r—— 常數(shù)表達(dá)式 該常數(shù)必須對應(yīng) 8位位圖,即一個 8位的常數(shù)通過循環(huán)右移偶數(shù)位 得到。 BEQ D1   ;分支指令,執(zhí)行條件 EQ,即相等則跳轉(zhuǎn)到 D1216。增長方向?yàn)橄蛏显鲩L。將 R1~ R7的數(shù)據(jù)保存到存儲器中??者f增 :堆棧向上增長,堆棧指針指向堆棧上的第一個空位置。(6).多寄存器尋址0x40000000R1R2 0x?? 0x01 0x400000000x??R3R4 0x??R6 0x??0x020x030x040x400000040x400000080x4000000C存儲器LDMIA R1!,{R2R4,R6} 0x400000100x010x020x030x04 堆棧是一個按特定順序進(jìn)行存取的存儲區(qū),操作順序?yàn)?“后進(jìn)先出 ” 。到保存到 R0指定的存儲單元 (5).基址尋址0x55R2R3 0x400000000xAA0x4000000CLDR R2,[R3,0x0C]0xAA將 R3+0x0C作為地址裝載數(shù)據(jù) 多寄存器尋址一次可傳送幾個寄存器值,允許一條指令傳送 16個寄存器的任何子集或所有寄存器。將 R2指向的存儲單元的數(shù)據(jù)讀出。將立即數(shù) 0xFF000裝入 R0寄存器 0x55R0MOV R0,0xFF00程序存儲(2).立即尋址MOV R0,0xFF000xFF00從代碼中獲得數(shù)據(jù) 寄存器移位尋址是 ARM指令集特有的尋址方式。 ARM處理器具有 9種基本尋址方式。將 R1的值減去 R2的值,結(jié)果保存到 R0 0xAA0x55R2(1).寄存器尋址MOV R1,R20xAA 立即尋址指令中的操作碼字段后面的地址碼部分即是操作數(shù)本身,也就是說,數(shù)據(jù)就包含在指令當(dāng)中,取出指令也就取出了可以立即使用的操作數(shù) (這樣的數(shù)稱為立即數(shù) )。R2的值左移 R3位,然后和 R1相 。讀取 R3+0x0C地址上的存儲單元 。存到 R0指向的存儲 。 (7).堆棧尋址0x123456780x12345678棧頂SP? 0x12345678棧頂SP?壓棧 壓棧所以可以組合出四種類型的堆棧方式:167。指令如 LDMED、 STMED等。將 R1~ R7的數(shù)據(jù)保存到存儲器中。 ARM指令的基本格式如下:(1).指令格式opcode {cond} {S} Rd ,Rn{,operand2} 其中 號內(nèi)的項(xiàng)是必須的, {}號內(nèi)的項(xiàng)是可選的。immed_8r—— 常數(shù)表達(dá)式;167。Rm—— 寄存器方式 在寄存器方式下,操作數(shù)即為寄存器的數(shù)值。 存儲器訪問指令分為 單寄存器操作指令 和 多 寄存器操作指令 。將指定地址上的字節(jié)數(shù)據(jù)讀入 Rd STR{cond}B{T} Rd,地址 。 167。后索引偏移 : 如: LDR Rd,[Rn],0x04?LDR和 STR—— 字和無符號字節(jié)加載 /存儲指令注意: 大多數(shù)情況下,必須保證字?jǐn)?shù)據(jù)操作的地址是32位對齊的。將 Rd中的半字?jǐn)?shù)據(jù)存入指定地址(3). ARM存儲器訪問指令: 單寄存器存儲?LDR和 STR—— 半字和有符號字節(jié)加載 /存儲指令編碼 舉例如下 :LDRSB R1, [R0, R3] ;將 R0+R3地址上的字節(jié)數(shù)據(jù)讀到 R1,高 24位 ; 用符 號位擴(kuò)展LDRSH R1, [R9] ;將 R9地址上的半字?jǐn)?shù)據(jù)讀出到 R1,高 16位用符號 ; 位擴(kuò)展LDRH R6,[R2], 2;將 R2地址上的半字?jǐn)?shù)據(jù)讀出到 R6,高 16位用零擴(kuò) ; 展, R2=R2+2STRH R1, [Ro, 2]! ;將 R1的數(shù)據(jù)保存到 R0+2地址中,只存儲低 2 ;字節(jié)數(shù)據(jù), R0=R0+2 說明: LDR/STR指令用于對內(nèi)存變量的訪問、內(nèi)存緩沖區(qū)數(shù)據(jù)的訪問、查表、外圍部件的控制操作等等。216。若在 LDM指令且寄存器列表中包含有 PC時使用,那么除了正常的多寄存器傳送外,將 SPSR也拷貝到CPSR中,這可用于異常處理返回。 舉例如下:LDMIA R0!, {R3 R9};加載 R0指向地址上的多字?jǐn)?shù)據(jù),保存 ; 到 R3~R9中, R0值更新STMIA R1!, {R3 R9};將 R3~ R9的數(shù)據(jù)存儲到 R1指向的地址 ;上, R1值更新 STMFD SP!, {R0 R7, LR} ;現(xiàn)場保存,將 R0~ R LR人棧LDMFD SP!, {R0 R7, PC} ;恢復(fù)現(xiàn)場,異常處理返回(3). ARM存儲器訪問指令: SWP指令用于將一個內(nèi)存單元 (該單元地址放在寄存器 Rn中 )的內(nèi)容讀取到一個寄存器 Rd中,同時將另一個寄存器 Rm的內(nèi)容寫入到該內(nèi)存單元中。數(shù)據(jù)傳送指令;167。指令格式如下: MVN{cond}{S} Rd,operand2 (4). ARM數(shù)據(jù)處理指令: 數(shù)據(jù)傳送 MVN指令舉例如下: MVN R1,0xFF ; R1=0xFFFFFF00 MVN R1,R2 ; 將 R2取反,結(jié)果存到 R1 助記符 說明 操作 條件碼位置ADD Rd, Rn, operand2 加法運(yùn)算指令 Rd← Rn+operand2 ADD{cond}{S}SUB Rd, Rn, operand2 減法運(yùn)算指令 Rd← Rnoperand2 SUB{cond}{S}RSB Rd, Rn, operand2 逆向減法指令 Rd← operand2Rn RSB{cond}{S}ADC Rd, Rn, operand2 帶進(jìn)位加法 Rd← Rn+operand2+Carry ADC{cond}{S}SBC Rd, Rn, operand2 帶進(jìn)位減法指令 Rd← Rnoperand2(NOT)Carry SBC{cond}{S}RSC Rd, Rn, operand2 帶進(jìn)位逆向減法指令Rd← operand2Rn(NOT)Carry RSC{cond}{S}(4). ARM數(shù)據(jù)處理指令: 算術(shù)運(yùn)算助記符 說明 操作 條件碼位置ADD Rd, Rn, operand2 加法運(yùn)算指令 Rd← Rn+operand2 ADD{cond}{S}SUB Rd, Rn, operand2 減法運(yùn)算指令 Rd← Rnoperand2 SUB{cond}{S}RSB R
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1