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

正文內(nèi)容

指令系統(tǒng)與程序編制(編輯修改稿)

2025-06-14 00:51 本頁面
 

【文章內(nèi)容簡介】 R0,R1,R5,R8 。 (R R0)=R5 R8 UMLAL R0,R1,R5,R8 。(R R0)=R5 R8+(R R0) SMULL R2,R3,R7,R6 。 (R R2)=R7 R6 SMLAL R2,R3,R7,R6 。 (R R2)=R7 R6+(R R2) 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ? ( 4) 分支指令 在 ARM中有兩種方式可以實(shí)現(xiàn)程序的跳轉(zhuǎn) ,一種是使用分支指令直接跳轉(zhuǎn) , 另一種則是直接向 PC寄存器賦值實(shí)現(xiàn)跳轉(zhuǎn) 。 分支指令有以下三種: ?分支指令 B; ?帶鏈接的分支指令 BL; ?帶狀態(tài)切換的分支指令 BX。 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 助記符 說明 操作 條件碼位置 B label 分支指令 PC← label B{cond} BL label 帶鏈接的分支指令 LR← PC4, PC← label BL{cond} BX Rm 帶狀態(tài)切換的分支指令 PC← Rm, 切換處理器狀態(tài) BX{cond} ARM指令 —— 分支指令 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ? ( 5) 雜項(xiàng)指令 ARM指令集中有三條指令作為雜項(xiàng)指令 , 在實(shí)際應(yīng)用中這三條指令非常重要 。 它們?nèi)缦滤荆? 助記符 說明 操作 條件碼位置 SWI immed_24 軟中斷指令 產(chǎn)生軟中斷 , 處理器進(jìn)入管理模式 SWI{cond} MRS Rd,psr 讀狀態(tài)寄存器指令 Rd←psr , psr為 CPSR或 SPSR MRS{cond} MSR psr_fields, Rd/immed_8r 寫狀態(tài)寄存器指令 psr_fields←Rd/immed_ 8r, psr為 CPSR或 SPSR MSR{cond} 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ARM雜項(xiàng)指令 —— 軟中斷指令 SWI指令用于產(chǎn)生 SWI異常 , 使得 CPU模式變換到管理模式 , 并且將CPSR保存到管理模式的 SPSR中 , 然后程序跳轉(zhuǎn)到 SWI異常入口 。 不影響條件碼標(biāo)志 。 該指令主要 用于用戶程序調(diào)用操作系統(tǒng)的系統(tǒng)服務(wù) , 操作系統(tǒng)在 SWI異常處理程序中進(jìn)行相應(yīng)的系統(tǒng)服務(wù) 。 SWI{cond} immed_24 SWI指令格式 SWI指令編碼 指令執(zhí)行的條件碼 指令傳遞的參數(shù) ( 24位立即數(shù) , 其值為 0~ 224- 1) ,執(zhí)行時 CPU忽略該參數(shù) 。 示例 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ARM雜項(xiàng)指令 —— 狀態(tài)寄存器讀指令 在 ARM處理器中 , 只有 MRS指令可以對狀態(tài)寄存器 CPSR和 SPSR進(jìn)行讀操作 。 通過讀 CPSR可以了解當(dāng)前處理器的工作狀態(tài) 。 讀 SPSR寄存器可以了解到進(jìn)入異常前的處理器狀態(tài) 。 該指令不影響條件碼 。 MRS{cond} Rd,psr MRS指令格式 應(yīng)用示例: MRS R1,CPSR。 將 CPSR狀態(tài)寄存器讀取 , 保存到 R1中 MRS R2,SPSR。 將 SPSR狀態(tài)寄存器讀取 , 保存到 R2中 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 N Z C V — — I M0 M1 M2 M3 M4 T F — . . . 31 30 29 28 27 26 8 7 6 5 4 3 2 1 0 條件代碼標(biāo)志 保留 控制位 溢出標(biāo)志 oVerflow 進(jìn)位或借位擴(kuò)展 Carry 零 Zero 負(fù)或小于 Negative IRQ禁止 Interrupt FIQ禁止 Fast 狀態(tài)位 Thumb 模式位 Mode CPSR/SPSR寄存器的格式 每個異常模式還帶有一個程序狀態(tài)保存寄存器 ( SPSR),它用于保存在異常發(fā)生之前的 CPSR。 CPSR和SPSR通過特殊指令( MRS、 MSR)進(jìn)行訪問。 CPSR_c CPSR_f 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ARM雜項(xiàng)指令 —— 狀態(tài)寄存器寫指令 在 ARM處理器中 , 只有 MSR指令可以對狀態(tài)寄存器 CPSR和 SPSR進(jìn)行寫操作 。 與 MRS配合使用 , 可以實(shí)現(xiàn)對 CPSR或 SPSR寄存器的讀 修改 寫操作 ,可以切換處理器模式 、 或者允許 /禁止 IRQ/FIQ中斷等 。 MSR{cond} psr_fields,immed_8r MSR指令格式 1 MSR{cond} psr_fields,Rm MSR指令格式 2 指令執(zhí)行的條件碼 CPSR或 SPSR 指定傳送的區(qū)域 , 可以為以下字母( 必須小寫 ) 的一個或者組合: c 控制域 屏蔽字節(jié) (psr[7..0]) x 擴(kuò)展域屏蔽字節(jié) (psr[15..8]) s 狀態(tài)域屏蔽字節(jié) (psr[23..16]) f 標(biāo)志域 屏蔽字節(jié) (psr[31..24]) 保存要傳送到狀態(tài)寄存器指定域數(shù)據(jù)的源寄存器 要傳送到狀態(tài)寄存器指定域的立即數(shù) CPSR_f CPSR_c 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 (1) (2) (3) (4) ARM雜項(xiàng)指令 —— 狀態(tài)寄存器寫指令 在 ARM處理器中 , 只有 MSR指令可以對狀態(tài)寄存器 CPSR和 SPSR進(jìn)行寫操作 。 與 MRS配合使用 , 可以實(shí)現(xiàn)對 CPSR或 SPSR寄存器的讀 修改 寫操作 ,可以切換處理器模式 、 或者允許 /禁止 IRQ/FIQ中斷等 。 應(yīng)用示例 1: 。子程序:使能 IRQ中斷 ENABLE_IRQ MRS R0, CPSR BIC R0, R0,0x80 MSR CPSR_c,R0 MOV PC,LR 應(yīng)用示例 2: 。子程序:禁能 IRQ中斷 DISABLE_IRQ MRS R0, CPSR ORR R0, R0,0x80 MSR CPSR_c,R0 MOV PC,LR CPSR寄存器內(nèi)容讀出到 R0; CPSR中的 I控制位; CPSR寄存器的對應(yīng)控制域; ; 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 5 ARM偽指令 ? ARM偽指令 ARM偽指令不屬于 ARM指令集中的指令 , 是為了編程方便而定義的 。 偽指令可以像其它 ARM指令一樣使用 , 但在編譯時這些指令將被等效的一條或多條 ARM指令所代替 。 ARM偽指令有四條 ,分別為 ADR偽指令 、 ADRL偽指令 、 LDR偽指令 、NOP偽指令 。 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ARM偽指令 —— 大范圍的地址讀取 LDR偽指令用于加載 32位的立即數(shù)或一個地址值到指定寄存器 。 在匯編編譯源程序時 , LDR偽指令被編譯器替換成一條合適的指令 。 若加載的常數(shù)未超出 MOV或 MVN的范圍 , 則使用 MOV或 MVN指令代替該 LDR偽指令 , 否則匯編器將常量放入文字池 , 并使用一條程序相對偏移的 LDR指令從文字池讀出常量 。 應(yīng)用示例 ( 加載常量 ) : LDR R2, =0xFF0 。MOV R2, 0xFF0 LDR R0, =0xFF000000 。MOV R0, 0xFF000000 LDR R1, =0xFFFFFFFE 。MVN R1, 0x1 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ARM偽指令 —— 大范圍的地址讀取 應(yīng)用示例 ( 加載地址 ) : ... LDR R1,=InitStack ... InitStack MOV R0, LR ... 使用偽指令將程序標(biāo)號InitStack的地址存入 R1 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ARM偽指令 —— 大范圍的地址讀取 應(yīng)用示例 ( 加載地址 ) : 編譯后的反匯編代碼: ... LDR R1,=InitStack ... InitStack MOV R0, LR ... ... 0x60 LDR R1,0xb4 ... 0x64 MOV R0, LR ... 0xb4 DCD 0x64 使用偽指令將程序標(biāo)號InitStack的地址存入 R1 地址 程序代碼 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 ARM偽指令 —— 大范圍的地址讀取 應(yīng)用示例 ( 加載地址 ) : 編譯后的反匯編代碼: ... LDR R1,=InitStack ... InitStack MOV R0, LR ... ... 0x60 LDR R1,0xb4 ... 0x64 MOV R0, LR ... 0xb4 DCD 0x64 使用偽指令將程序標(biāo)號InitStack的地址存入 R1 LDR偽指令被匯編成一條 LDR指令 ,并在文字池中定義了一個常量 , 該常量為 InitStack標(biāo)號的地址 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 數(shù)據(jù)定義指示符 LTORG 指示匯編器匯編當(dāng)前文字池 ^ 或 MAP 置存儲映射的起點(diǎn)到一個特定的地址 或 FIELD 描述指示符所定義的存儲映射中的空間 % 或 SPACE 定義一塊值為 0的存儲器區(qū)域 = 或 DCB 分配一個或多個字節(jié) amp。 或 DCD 分配一個或多個字 , 從 4字節(jié)邊界開始 DCDU 分配一個或多個字 , 但不一定從 4字節(jié)邊界開始 DCDO 分配以字邊界開始的存儲區(qū)域 , 并指定初始值為到靜態(tài)基址寄存器的偏移 DCFD 分配給雙精度浮點(diǎn)數(shù)一段以字邊界開始的內(nèi)存區(qū)域 DCFDU 分配給雙精度浮點(diǎn)數(shù)一段以任意邊界開始的內(nèi)存區(qū)域 DCFS 分配給單精度浮點(diǎn)數(shù)一段以字邊界開始的內(nèi)存區(qū)域 DCFSU 分配給單精度浮點(diǎn)數(shù)一段以任意邊界開始的內(nèi)存區(qū)域 DCI 分配以字邊界開始的存儲區(qū)域 , 并指定初始值 。 標(biāo)記此地址存儲的是代碼而不是數(shù)據(jù) DCQ 分配給雙精度浮點(diǎn)數(shù)一段以 4字節(jié)邊界開始的內(nèi)存區(qū)域 DCQU 分配給雙精度浮點(diǎn)數(shù)一段以任意邊界開始的內(nèi)存區(qū)域 DCW 分配給一個或多個半字以半字邊界開始的內(nèi)存區(qū)域 DCWU 分配給一個或多個半字以任意邊界開始的內(nèi)存區(qū)域 DATA 標(biāo)識一個標(biāo)號是代碼段中數(shù)據(jù)的標(biāo)號 , 該符號后是 DCB或 DCD 成都信息工程學(xué)院 3+1創(chuàng)新實(shí)驗(yàn)班 2021/6/14 雜項(xiàng)指示符 ALIGN 從一個字邊界開始 AREA 指示匯編器匯編一段新的代碼或數(shù)據(jù)部分 CODE16 指示匯編器將隨后的指令作為 16位 Thumb指令 CODE32 指示匯編器將隨后的指令作為 32位 ARM指令 END 表示源程序的結(jié)束 ENTRY 指向程序的入口 , 一個源文件中只能有一個 ENTRY * 或 EQU 對一個常量賦予一個符號名 EXPORT或GLOBAL 說明了由鏈接器在目標(biāo)和庫文件中使用的符號 IMPORT或EXTERN 提供匯編器在當(dāng)前匯編中未曾定義的符號名 GET或 INCLUDE 包含一個文件 , 在 GET處匯編包含的文件 INCBIN 包含一個未被匯編過的文件 KEEP 指示匯編器保留符號表中的局部符號 NOFP 在匯編語言程序中禁止浮點(diǎn)指令 REQUIRE 指示兩段之間的依賴關(guān)系 REQUIRE8 指示當(dāng)前文件請求堆棧為 8字節(jié)對準(zhǔn) PR
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1