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

正文內(nèi)容

arm體系結(jié)構(gòu)與指令集-文庫吧在線文庫

2025-03-31 12:38上一頁面

下一頁面
  

【正文】 種模式,是一種供操作系統(tǒng)使用的保護(hù)模式 數(shù)據(jù)訪問中止模式( Abort) abt 當(dāng)存取異常時(shí)將會進(jìn)入這種模式,用于虛擬存儲或存儲保護(hù) 未定義指令中止模式( Undef) und 當(dāng)執(zhí)行未定義指令時(shí)進(jìn)入這種模式,有時(shí)用于通過軟件仿真協(xié)處理器硬件的工作方式 系統(tǒng)模式( System) sys 使用和 User模式相同寄存器集的模式,用于運(yùn)行特權(quán)級操作系統(tǒng)任務(wù) 除用戶模式外的其他 6種處理器模式稱為特權(quán)模式( Privileged Modes)。通過本章的學(xué)習(xí),希望讀者能夠了解 ARM處理器內(nèi)部的主要工作單元、基本工作原理,掌握常用指令集,并為以后的程序設(shè)計(jì)打下基礎(chǔ)。 寄存器組織 ARM處理器有如下 37個 32位長的寄存器: ( 1) 30個通用寄存器; ( 2) 6個狀態(tài)寄存器: 1個 CPSR( Current Program Status Register,當(dāng)前程序狀態(tài)寄存器), 5個 SPSR( Saved Program Status Register,備份程序狀態(tài)寄存器); ( 3) 1個 PC( Program Counter,程序計(jì)數(shù)器)。 1.未分組寄存器 對于分組寄存器 R13和 R14來說,每個寄存器對應(yīng) 6個不同的物理寄存器。 狀態(tài)寄存器 當(dāng)前程序狀態(tài)寄存器( Current Program Status Register, CPSR)可以在任何處理器模式下被訪問,它包含下列內(nèi)容: ( 1) ALU( Arithmetic Logic Unit,算術(shù)邏輯單元)狀態(tài)標(biāo)志的備份; ( 2)當(dāng)前的處理器模式; ( 3)中斷使能標(biāo)志; ( 4)設(shè)置處理器的狀態(tài)(只在 4T架構(gòu))。 程序計(jì)數(shù)器在下面兩種情況下用于特殊的目的。 ( 3)執(zhí)行( excute):處理指令并將結(jié)果寫回寄存器。 ( 5)回寫( writeback):將指令的結(jié)果回寫到寄存器堆,包括任何從寄存器讀出的數(shù)據(jù)。 ( 2)使用內(nèi)存映射技術(shù)實(shí)現(xiàn)虛擬空間到物理空間的映射。 協(xié)處理器( CP15) ARM處理器支持 16個協(xié)處理器。在帶 MMU的操作系統(tǒng)控制下,運(yùn)行的任務(wù)無須知道其他與之無關(guān)的任務(wù)的存儲需求情況,這就簡化了各個任務(wù)的設(shè)計(jì)。 異 常 ARM體系結(jié)構(gòu)中,存在 7種異常處理。 2.未定義指令異常 軟中斷( SWI)異常發(fā)生時(shí),處理器進(jìn)入特權(quán)模式,執(zhí)行一些特權(quán)模式下的操作系統(tǒng)功能。系統(tǒng)中各外部設(shè)備通常通過該異常中斷請求處理器服務(wù)。 前面介紹向量表時(shí)提到,每一個異常發(fā)生時(shí)總是從異常向量表開始跳轉(zhuǎn)。根據(jù)使用的指令類型不同,指令的尋址方式分為數(shù)據(jù)處理指令尋址方式和內(nèi)存訪問指令尋址方式。 3.寄存器移位尋址方式 內(nèi)存訪問指令尋址方式 內(nèi)存訪問指令的尋址方式可以分為以下幾種。 Rm 寄存器后索引尋址 ( Register postindexed) 9 [Rn],177。 該類指令的語法格式如下: LDM|STM{cond}addressing_mode Rn{!},registers^ 3.批量 Load/Store指令尋址方式 表 210 批量 Load/Store指令的尋址方式 格 式 模 式 1 IA( Increment After) 后遞增方式 2 IB( Increment Before) 先遞增方式 3 DA( Decrement After) 后遞減方式 4 DB( Decrement Before) 先遞減方式 堆棧操作尋址方式和批量 Load/Store指令尋址方式十分類似。 ( 1)滿遞減 FD( Full Descending)。 MOV指令將移位碼( shifter_operand)表示的數(shù)據(jù)傳送到目的寄存器 Rd,并根據(jù)操作的結(jié)果更新 CPSR中相應(yīng)的條件標(biāo)志位。 ( 1)指令的語法格式 EOR{cond}{S} Rd,Rn,shifter_operand ( 2)指令舉例 4. EOR指令 SUB( Subtract)指令從寄存器 Rn中減去 shifter_operand表示的數(shù)值,并將結(jié)果保存到目標(biāo)寄存器 Rd中,并根據(jù)指令的執(zhí)行結(jié)果設(shè)置 CPSR中相應(yīng)的標(biāo)志位。條件標(biāo)志位根據(jù)兩個操作數(shù)做“邏輯與”后的結(jié)果設(shè)置。 ( 1)指令的語法格式 BIC{cond}{S} Rd,Rn,shifter_operand ( 2) BIC指令舉例 16. BIC位清零指令 ARM乘法指令完成兩個數(shù)據(jù)的乘法。 ( 1)指令的語法格式 UMULL{cond}{S} RdLo,RdHi,Rm,Rs ( 2)指令舉例 3. UMULL指令 UMLAL( Unsigned Multiply Accumulate Long)為 64位無符號長乘 — 累加指令。 Load/Store指令 這些指令在 ARM寄存器和存儲器之間提供更靈活的單數(shù)據(jù)項(xiàng)傳送方式。 ( 1)指令的語法格式 LDR{cond} Rd,addr_mode ( 2)指令舉例 1. LDR指令 STR指令用于將一個 32位的字?jǐn)?shù)據(jù)寫入到指令中指定的內(nèi)存單元。 指令的語法格式: LDM{cond}addressing_mode Rn{!}, registers 1. LDM指令 LDM指令將數(shù)據(jù)從連續(xù)的內(nèi)存單元中讀取到指令中指定的寄存器列表中的各寄存器中。指令格式如下: LDM{cond}模式 Rn{!},regist{?} STM{cond}模式 Rn{!},regist{?} 數(shù)據(jù)傳送指令應(yīng)用 表 216 多寄存器的 Load/Store內(nèi)存訪問指令映射 向 上 生 長 向 下 生 長 滿 空 滿 空 增加 之前 STMIB LDMIB STMFA LDMED 之后 STMIA LDMIA STMEA LDMFD 增加 之前 LDMDB STMDB LDMEA STMFD 之后 LDMDA STMDA LDMFA STMED 交換指令是 Load/Store指令的一種特例,它把一個寄存器單元的內(nèi)容與寄存器內(nèi)容交換。 2. BX帶狀態(tài)切換的跳轉(zhuǎn)指令 BX ( 1)指令的語法格式 BX{cond} Rm ( 2)指令舉例 帶連接和狀態(tài)切換的跳轉(zhuǎn)指令( Branch with Link Exchange, BLX)使用標(biāo)號,用于使程序跳轉(zhuǎn)到 Thumb狀態(tài)或從 Thumb狀態(tài)返回。 3.程序狀態(tài)寄存器指令的應(yīng)用 ARM體系結(jié)構(gòu)允許通過增加協(xié)處理器來擴(kuò)展指令集。當(dāng)系統(tǒng)中存在調(diào)試硬件時(shí),該指令被忽略。 ( 3)協(xié)處理器寄存器傳送指令。 ( 1)指令的語法格式 MRS{cond} Rd, PSR ( 2)指令舉例 1. MRS 在 ARM處理器中,只有 MSR指令可以直接設(shè)置狀態(tài)寄存器 CPSR或 SPSR。 指令的語法格式: SWP{cond} Rd,Rm,[Rn] 1. SWP字交換指令 SWPB指令用于將內(nèi)存中的一個字節(jié)單元和一個指定寄存器的低 8位值相交換, 指令的語法格式: SWP{cond}B Rd,Rm,[Rn] 2. SWPB字節(jié)交換指令 SWP指令用于將一個內(nèi)存單元(該單元地址放在寄存器 Rn中)的內(nèi)容讀取到一個寄存器Rd中,同時(shí)將另一個寄存器 Rm的內(nèi)容寫到該內(nèi)存單元中,使用 SWP可實(shí)現(xiàn)信號量操作。主要用于塊數(shù)據(jù)的寫入、數(shù)據(jù)棧操作及進(jìn)入子程序時(shí)保存相關(guān)寄存器等操作。 如果指令的內(nèi)存地址不是半字節(jié)對齊的,指令的執(zhí)行結(jié)果不可預(yù)知。 2.多寄存器 Load/Store內(nèi)存訪問指令 這些指令允許寄存器和存儲器中的數(shù)值進(jìn)行交換,在一條指令中有效地完成 Load/Store操作。 ( 1)指令的語法格式 SMULL{cond}{S} RdLo,RdHi,Rm,Rs ( 2)指令舉例 5. SMULL指令 SMLAL( Signed Multiply Accumulate Long)為 64位有符號長乘 — 累加指令。 乘法指令 表 213 各種形式乘法指令的功能 操作碼[23∶ 21] 助記符 意 義 操 作 000 MUL 乘(保留 32位結(jié)果) Rd: =( Rm Rs) [31∶ 0] 001 MLA 乘 — 累加( 32位結(jié)果) Rd: =( Rm Rs+ Rn) [31∶ 0] 100 UMULL 無符號數(shù)長乘 RdHi: RdLo: =Rm Rs 101 UMLAL 無符號長乘 — 累加 RdHi: RdLo:+ =Rm Rs 110 SMULL 有符號數(shù)長乘 RdHi: RdLo: =Rm Rs 111 SMLAL 有符號數(shù)長乘 — 累加 RdHi: RdLo:+ =Rm Rs MUL( Multiply) 32位乘法指令將 Rm和 Rs中的值相乘,結(jié)果的最低 32位保存到 Rd中。 ( 1)指令的語法格式 TEQ{cond} Rn,shifter_operand ( 2) TEQ指令舉例 12. TEQ指令 CMP( Compare)指令使用寄存器 Rn的值減去 operand2的值,根據(jù)操作的結(jié)果更新 CPSR中相應(yīng)的條件標(biāo)志位,以便后面的指令根據(jù)相應(yīng)的條件標(biāo)志來判斷是否執(zhí)行。 ( 1)指令的語法格式 ADC{cond}{S} Rd,Rn,shifter_operand ( 2) ADC指令舉例 8. ADC指令 SBC( Subtract with Carry)指令用于執(zhí)行操作數(shù)大于 32位時(shí)的減法操作。 MVN指令將 shifter_operand表示的數(shù)據(jù)的反碼傳送到目的寄存器 Rd。 表 211 堆棧尋址方式和批量 Load/Store指令尋址方式對應(yīng)關(guān)系 批量數(shù)據(jù)尋址方式 堆棧尋址方式 L位 P位 U位 LDMDA LDMFA 1 0 0 LDMIA LDMFD 1 0 1 LDMDB LDMEA 1 1 0 LDMIB LDMED 1 1 1 STMDA STMED 0 0 0 STMIA STMEA 0 0 1 STMDB STMFD 0 1 0 STMIB STMFA 0 1 1
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1