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

正文內(nèi)容

[教育學(xué)]第三章arm指令系統(tǒng)(參考版)

2025-01-24 13:10本頁面
  

【正文】 若協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義指令異常中斷。 指令舉例如下: MCR p14, 3, R7, c7, c11, 6 ;從 ARM寄存器中將數(shù)據(jù)傳送到協(xié)處理器 p14的寄存器 ;中,其中 R7為 ARM寄存器,存放源操作數(shù); c7和c11為 ;協(xié)處理器寄存器,是目標(biāo)寄存器;操作碼 1為3;操作碼 2為 6。 若協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義指令異常中斷。 指令格式如下: STC{cond}{L} CP, CRd, 地址 其中格式說明同 LDC 指令。 STC——協(xié)處理器數(shù)據(jù)存入指令 將協(xié)處理器的寄存器數(shù)據(jù)存入到 某一連續(xù)的內(nèi)存單元中 ,由協(xié)處理器來控制寫入的字?jǐn)?shù)。 指令舉例如下: ? LDC p5, c2, [R2, 4] ;讀取 R2+4指向的內(nèi)存單元的數(shù)據(jù),傳送到協(xié)處理器 p5的 c2寄存器中。 ? CRd 作為目標(biāo)寄存的協(xié)處理器寄存器。 ? CP 指令操作的協(xié)處理器名。若協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義指令異常中斷。 LDC——協(xié)處理器數(shù)據(jù)讀取指令 LDC指令 從某一連續(xù)的內(nèi)存單元 將數(shù)據(jù)讀取到協(xié)處理器的寄存器中。 – 若協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義指令異常中斷。 指令舉例如下 : ? CDP p7, 0, c0, c2, c3, 0 ;協(xié)處理器 7執(zhí)行操作碼 1為 0和 ;可選操作碼 2為 0的操作。 ? CRm 存放第 2個(gè)操作數(shù)的協(xié)處理器寄存器。 ? CRd 作為目標(biāo)寄存器的協(xié)處理器寄存器。標(biāo)準(zhǔn)名為 pn, n為 0~ 15。協(xié)處理器數(shù)據(jù)操作完全是協(xié)處理器內(nèi)部的操作,用于初始化 ARM協(xié)處理器,完成協(xié)處理器寄存器的狀態(tài)改變。 ARM的協(xié)處理器指令功能: ( 1) ARM處理器初始化 ARM協(xié)處理器的數(shù)據(jù)處理操作;( 2)在 ARM處理器的寄存器和協(xié)處理器的寄存器之間傳送數(shù)據(jù);( 3)在 ARM協(xié)處理器的寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)。 ARM寄存器與協(xié)處理器寄存器的數(shù)據(jù)傳送指令。 協(xié)處理器指令 ARM協(xié)處理器: ARM支持 16個(gè)協(xié)處理器,用于各種協(xié)處理器操作,最常使用的協(xié)處理器是用于控制片上功能的系統(tǒng)協(xié)處理器,例如控制高速緩存和存儲(chǔ)器的管理單元,浮點(diǎn) ARM協(xié)處理器等,還可以開發(fā)專用的協(xié)處理器。 (只有 V5T及以上體系 支持 BLX) 轉(zhuǎn)移 地址限制在當(dāng)前指令的 177。 指令舉例如下: ADRL R0, ThumbFun+1 ; 中等范圍的地址讀取偽指令 BX R0 ; 跳轉(zhuǎn)到 R0指定的地址,并 ;根據(jù) R0的最低位來切換處理 ;器到 Thumb狀態(tài)。 BX——帶狀態(tài)切換的轉(zhuǎn)移指令 指令格式如下: BX{cond} Rm BX指令跳轉(zhuǎn)到 Rm指定的地址執(zhí)行程序。 例子: BL SUB1 …… SUB1 STMFD R13! ,{R0R3,R14} …… BL SUB2 …… SUB2 …… 注意: 在保存 R14之前子程序不應(yīng)再調(diào)用下一級(jí)的嵌套子程序。 例子: 根據(jù)不同的條件,執(zhí)行不同的子程序。 32 MB的范圍內(nèi)。 例子: ? 無條件跳轉(zhuǎn): B label …… label …… ? 執(zhí)行 10次循環(huán): MOV R0, 10 LOOP …… SUBS R0, R0, 1 BNE LOOP BL——帶鏈接的轉(zhuǎn)移指令 指令格式如下: BL{cond} label BL指令先將 下一條指令的地址拷貝到 LR 鏈接寄存器中,然后跳轉(zhuǎn)到指定地址運(yùn)行程序。 指令舉例如下: B WAITA ;跳轉(zhuǎn)到 WAITA標(biāo)號(hào)處 B 0x1234 ;跳轉(zhuǎn)到絕對(duì)地址0x1234處 轉(zhuǎn)移指令 B限制在當(dāng)前指令的 177。 分支指令 概述 在 ARM中有兩種方式可以實(shí)現(xiàn)程序的跳轉(zhuǎn): – 一種是使用分支轉(zhuǎn)移指令直接跳轉(zhuǎn); – 另一種則是直接向 PC寄存器賦值來實(shí)現(xiàn)跳轉(zhuǎn)。使用 TEQ進(jìn)行相等測(cè)試時(shí),常與 EQ、NE條件碼配合使用。 ( 2) TEQ——測(cè)試相等指令 指令格式如下: TEQ{cond} Rn, operand2 TEQ指令將寄存器 Rn的值與 operand2的值按位邏輯 “異或 ”操作,根據(jù)操作的結(jié)果更新 CPSR中的相應(yīng)條件標(biāo)志位,以便后面的指令根據(jù)相應(yīng)的條件標(biāo)志來判斷是否執(zhí)行。當(dāng)所有測(cè)試位均為 0時(shí), EQ有效。 指令舉例如下: TST R0, 0x01 ;判斷 R0的最低位是否為 0 TST Rl, 0x0F ;判斷 R1的低 4位是否為 0 TST指令與 ANDS指令的區(qū)別在于 TST指令不保存運(yùn)算結(jié)果。 CMN指令可用于負(fù)數(shù)比較,比如 “CMN R0,1”指令則表示 R0與 1比較。 ;若是,則 Z位置 1。 使用方法: 一般 Rn中存放的是欲比較的負(fù)數(shù),operand2為另一被比較的數(shù)。 指令舉例如下: MVN R1, 0xFF ; R1?0xFFFFFF00 MVN R1, R2 ; Rl? R2取反 比較指令 ( 1) CMP——比較指令 指令格式如下: CMP{cond} Rn, operand2 CMP指令將寄存器 Rn的值減去 operand2的值,根據(jù)操作的結(jié)果更新 CPSR中的相應(yīng)條件標(biāo)志位,以便后面的指令根據(jù)相應(yīng)的條件標(biāo)志來判斷是否執(zhí)行。這樣可以實(shí)現(xiàn)從某些異常中斷中返回。 – 實(shí)現(xiàn)把當(dāng)前處理器模式的 SPSR寄存器內(nèi)容復(fù)制到 CPSR中 。 MOV Rd, Rd, LSL,3 – 實(shí)現(xiàn)子程序調(diào)用、從子程序中返回 。 – 立即數(shù)傳送到寄存器中 。 數(shù)據(jù)傳送指令 MOV——數(shù)據(jù)傳送指令 ( 1)指令格式如下: MOV{cond}{S} Rd, operand2 MOV指令將 operand2傳送到目標(biāo)寄存器 Rd中。 指令舉例如下: BIC R1, R1, 0x0F ;將 R1的低 4位清 0, ;其它位不變 BIC指令可用于將寄存器中某些位的值設(shè)置成 0。將某一位與 0異或,該位值不變;與 1異或,該位值被求反。 EOR——邏輯 “異或 ”操作指令 指令格式如下: EOR{cond}{S} Rd, Rn, operand2 EOR指令將 operand2的值與寄存器 Rn的值按位邏輯 “異或 ”操作,結(jié)果保存到 Rd中。 ORR——邏輯 “或 ”操作指令 指令格式如下: ORR{cond}{S} Rd, Rn, operand2 ORR指令將 operand2的值與寄存器 Rn的值按位邏輯 “或 ”操作,結(jié)果保存到 Rd中。0x01 ;取出最低位數(shù)據(jù) AND R2, R1, R3 ; R2= R1amp。 邏輯運(yùn)算指令 AND——邏輯 “與 ”操作指令 指令格式如下: AND{cond}{S} Rd, Rn, operand2 AND指令將 operand2的值與寄存器 Rn的值按位邏輯 “與 ”操作,結(jié)果保存到 Rd中。 – 對(duì) V標(biāo)志位: 乘法指令 不影響 V標(biāo)志位。 a. 對(duì)標(biāo)志位的影響 – 對(duì) N標(biāo)志位: 對(duì)有符號(hào)數(shù)乘法,若結(jié)果是 32位指令形式, Rd的第 31位是標(biāo)志位 N;對(duì)于產(chǎn)生長(zhǎng)結(jié)果的指令形式, RdHi的第 31位是標(biāo)志位。 d. 早期的 ARM處理器僅支持 32位乘法指令。 ? RdHi和 RdLo不能為同一寄存器。 b. 結(jié)果寄存器不能與第一源寄存器相同。 指令舉例如下: SMULL R2, R3, R7, R6 ;(R3,R2)?R7 R6 SMLAL—64位有符號(hào)乘加指令 指令格式如下: SMLAL{cond}{S} RdLo, RdHi, Rm, Rs ; RdHi, RdLo? Rm*Rs+ RdHi, RdLo SMLAL指令將 Rm和 Rs中的值作有符號(hào)數(shù)相乘, 64位乘積與 RdHi、 RdLo相加,結(jié)果的低 32位保存到 RdLo中,高 32位保存到 RdHi中。 指令舉例如下: UMULL R0, R1, R5, R8 ;(R1,R0)?R5 R8 UMLAL—64位無符號(hào)乘加指令 指令格式如下: UMLAL{cond}{S} RdLo, RdHi, Rm, Rs ; RdHi, RdLo? Rm*Rs+ RdHi, RdLo UMLAL指令將 Rm和 Rs中的值作無符號(hào)數(shù)相乘, 64位乘積與 RdHi、 RdLo相加,結(jié)果的低 32位保存到 RdLo中,而高 32位保存到 RdHi中。 指令舉例如下: MUL R1, R2, R3 ; R1=R2 R3 MULS R0, R3, R7 ; R0=R3 R7, ;設(shè)置 CPSR的 N位和 Z位 MLA——32位乘加指令 指令格式如下 : MLA{cond}{S} Rd, Rm, Rs, Rn ; Rd?Rm*Rs+Rn MLA指令將 Rm和 Rs中的值相乘,再將乘積加上第 3個(gè)操作數(shù),結(jié)果的低 32位保存到 Rd中。 MUL Rd,Rn,Rm 32位乘法指令 MLA Rd,Rn,Rm,Ra 32位乘加指令 UMULL RdL,RdH,Rn,Rm 64位無符號(hào)乘法 UMLAL RdL,RdH,Rn,Rm 64位無符號(hào)乘加 SMULL RdL,RdH,Rn,Rm 64位有符號(hào)乘法 SMLAL RdL,RdH,Rn,Rm 64位有符號(hào)乘加 二、乘法指令 ? ARM有兩類乘法指令: – 32位的乘法指令,即乘法操作的結(jié)果為 32位; – 64位的乘法指令,即乘法操作的結(jié)果為 64位。 指令舉例如下: RSB R3, R1, 0xFF00 ; R3= 0xFF00R1 RSBS R1, R2, R2, LSL 2 ; R1?R22R2 ; (R1 =R2 3) RSC——帶進(jìn)位反向減法指令 指令格式如下: RSC{cond}{S} Rd, Rn, operand2 RSC 指令用寄存器 operand2減去 Rn,再減去CPSR中的 C條件標(biāo)志位的反碼,結(jié)果保存到 Rd中。 指令舉例 SUBS R0, R0, l ; R0= R01 SUB R6, R7, 0x10 ; R6= R70x10 SBC——帶進(jìn)位減法指令 指令格式 SBC{cond}{S} Rd, Rn, operand2 SBC指令用寄存器 Rn減去 operand2,再減去CPSR中的 C條件標(biāo)志位的反碼,結(jié)果保存到 Rd中。 指令舉例
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1