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

正文內容

[教育學]第三章 arm指令系統(tǒng)(文件)

2025-02-08 13:10 上一頁面

下一頁面
 

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