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

正文內(nèi)容

匯編及嵌入式c語言—第二章(留存版)

2025-03-08 00:05上一頁面

下一頁面
  

【正文】 ??? PC PC4 PC8 正在執(zhí)行 正在譯碼 正在取指 流水線狀態(tài) 地址 程序代碼 讀 R15的限制 ? 當(dāng)使用 STR或 STM指令保存 R15時,會有一個例外。 當(dāng)進行減法運算 , 并且最高位產(chǎn)生借位時C=0, 否則 C=1。 異常向量表 異常類型 模式 地址 復(fù)位 管理 0x00000000 未定義指令 未定義 0x00000004 軟件中斷( SWI) 管理 0x00000008 預(yù)取中止(取指令存儲器中止) 中止 0x0000000C 數(shù)據(jù)中止(數(shù)據(jù)訪問存儲器中止) 中止 0x00000010 IRQ(中斷) IRQ 0x00000018 FIQ(快速中斷) FIQ 0x0000001C 進入異常 1. 在適當(dāng)?shù)?LR中保存下一條指令的地址; 2. 將 CPSR復(fù)制到相應(yīng)的 SPSR中; 3. 根據(jù)異常類型,強制設(shè)置 CPSR的運行模式位; 4. 強制 PC從相應(yīng)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。 ? 未定義指令 當(dāng) ARM處理器遇到一條自己和系統(tǒng)內(nèi)任何協(xié)處理器都無法處理的指令時, ARM內(nèi)核執(zhí)行未定義指令陷阱。 Opcode {Cond} {S} Rd , Rn { , Operand2 } 操作碼 條件助記符 標志 含義 0000 EQ Z=1 相等 0001 NE Z=0 不相等 0010 CS/HS C=1 無符號數(shù)大于或等于 0011 CC/LO C=0 無符號數(shù)小于 0100 MI N=1 負數(shù) 0101 PL N=0 正數(shù)或零 0110 VS V=1 溢出 0111 VC V=0 沒有溢出 1000 HI C=1,Z=0 無符號數(shù)大于 1001 LS C=0,Z=1 無符號數(shù)小于或等于 1010 GE N=V 有符號數(shù)大于或等于 1011 LT N!=V 有符號數(shù)小于 1100 GT Z=0,N=V 有符號數(shù)大于 1101 LE Z=1,N!=V 有符號數(shù)小于或等于 1110 AL 任何 無條件執(zhí)行 (指令默認條件 ) 1111 NV 任何 從不執(zhí)行 (不要使用 ) 舉例如下: C代碼: If(a b) a++。寄存器移位后的值可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。加載指定地址上的數(shù)據(jù)放入 Rd中,加載(指定地址 +4)地址上的數(shù)據(jù)放入 R( d+1)中 STR{cond}D Rd,地址 。 。 數(shù)據(jù)處理指令只能對寄存器的內(nèi)容進行操作,而不能對內(nèi)存中的數(shù)據(jù)進行操作。 模式 說明 模式 說明 IA 每次傳送后地址加 4 FD 滿遞減堆棧 IB 每次傳送前地址加 4 ED 空遞減堆棧 DA 每次傳送后地址減 4 FA 滿遞增堆棧 DB 每次傳送前地址減 4 EA 空遞增堆棧 數(shù)據(jù)塊傳送操作 堆棧操作 批量 Load/Store指令的尋址方式 進行數(shù)據(jù)復(fù)制時,先設(shè)置好源數(shù)據(jù)指針和目標指針,然后使用塊拷貝尋址指令LDMIA/STMIA、 LDMIB/STMIB、 LDMDA/STMDA、LDMDB/STMDB進行讀取和存儲 。加載指定地址上的數(shù)據(jù)(帶符號半字),放入 Rd中 LDR{cond}H Rd,地址 。立即數(shù)可以是一個無符號的數(shù),這個數(shù) 可以加到基址寄存器,也可以從基址寄存器中減去。將 R1中的內(nèi)容循環(huán) 右移 2位后傳送到 R0 MOV R0,R1,RRX 。如果指令在流水線中因為發(fā)生分支而沒有被執(zhí)行,中止將不會發(fā)生。例如響應(yīng)一個來自外設(shè)的中斷。每種異常都有自己的 SPSR,在因為異常事件而進入異常時它保存CPSR的當(dāng)前值,異常退出時可通過它恢復(fù) CPSR。可以認為它是一個通用寄存器,但是對于它的使用有許多與指令相關(guān)的限制或特殊情況。一個用于除 FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。 – ARM7TDMI 支持 3種數(shù)據(jù)類型 ? 字節(jié) (8bit) ? 半字 (16bit) ? 字 (32bit) – 字必須被排成 4個字節(jié)邊界對齊 ,半字必須被排列成 2個字節(jié)邊界對齊 ARM處理器的工作狀態(tài) ? ARM微處理器的工作狀態(tài)一般有兩種 : ARM狀態(tài) — 處理器執(zhí)行 32位的字對齊的 ARM指令; Thumb狀態(tài) — 處理器執(zhí)行 16位的、半字對齊的Thumb指令。從 0字節(jié)到 3字節(jié)放置第一個存儲的字數(shù)據(jù),從第 4個字節(jié)到第 7個字節(jié)放置第二個存儲的字數(shù)據(jù),依次排列。 ? 分組的寄存器在處理器異常和特權(quán)操作時可得到快速的上下文切換。同時硬件將 “ BL Lable”指令的下一條指令所在地址存入 R14; B執(zhí)行最后,將 R14寄存器的內(nèi)容放入 PC,返回程序 A; R14寄存器與子程序調(diào)用 R14寄存器與異常發(fā)生 ? 異常發(fā)生時, 程序要跳轉(zhuǎn)至異常服務(wù)程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。R1=下面 STR指令的地址 STR PC,[R0] 。另外,請確保您程序的運行不受保留位的值影響,因為將來的處理器可能會將這些位設(shè)置為 1或者 0。 在異常處理結(jié)束后,異常處理程序完成以下動作: 程序 A IRQ服務(wù)程序 系統(tǒng)模式 IRQ模式 程序 寄存器組 LR_sys SPSR_irq LR_irq LR PC CPSR SPSR SYS 1 ? 0 . . . ? ? ? ? MOD T F I . . . N Z C V ?將 SPSR寄存器的值復(fù)制回CPSR寄存器; ?將 LR寄存的值減去一個常量后復(fù)制到 PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序。 ARM處理器的指令格式 ARM處理器的指令格式 Opcode {Cond} {S} Rd , Rn { , Operand2 } 其中: Opcode — 指令助記符; Cond — 指令執(zhí)行的條件碼 S — 決定指令的操作數(shù)是否影響 CPSR的值,選擇時影響 CPSR的值 Rd — 目標寄存器 Rn — 包含第 1個操作數(shù)的寄存器 Operand2 — 表示第 2個操作數(shù) ? 第 2個操作數(shù) 靈活的使用第 2個操作數(shù)“ operand2” 能夠提高代碼效率。若 R0≤R 1, 則 R1=R1+1 ARM指令尋址方式 字及無符號字節(jié)的 Load/Store指令的尋址方式 ? LDR指令用于從內(nèi)存中讀取單一字或字節(jié)數(shù)據(jù)存入寄存器中, STR指令用于將寄存器中的單一字或字節(jié)數(shù)據(jù)保存到內(nèi)存。 如: LDR R1,[R0, 4] ; R1 ← [R0+4] ▲ 事先更新方法。允許一條指令傳送 16個寄存器的任何子集或所有寄存器。 32M字節(jié)地址內(nèi) (ARM指令為字對齊,最低 2位地址固定為 0)。 跳轉(zhuǎn)到 WAITA標號處 B 0x1234 。 ? 指令格式如下: LDM{cond}模式 Rn{!}, reglist{^} STM{cond}模式 Rn{!}, reglist{^} cond:指令執(zhí)行的條件; 模式:控制地址的增長方式,一共有 8種模式; !:表示在操作結(jié)束后,將最后的地址寫回Rn中; reglist :表示寄存器列表,可以包含多個寄存器,它們使用“ ,”隔開,如 {R1,R2,R6R9},寄存器由小到大排列; ? 指令格式如下: LDM{cond}模式 Rn{!}, reglist{^} STM{cond}模式 Rn{!}, reglist{^} ^:可選后綴,允許在用戶模式或系統(tǒng)模式下使用。 如: LDR R0,[R1, 4]!; R0 ← [R1+4], R1=R1+4 LDR R0,[R1, R2]?。?R0 ← [R1R2], R1=R1R2 ▲ 事后更新方法。將指定地址上的字數(shù)據(jù)讀入 Rd STR{cond}{T} Rd,地址 。 循環(huán)右移 10位 0x12 0 0 0 1 0 0 1 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x80 1 0 0 0 0 0 0 0 0x04 0 0 0 0 0 1 0 0 8位常數(shù) 請判斷以下 8位圖數(shù)據(jù)的正誤 ,并說明 明原因: 0x5f0000 0x208 0x101 0x4000000a 0x20400000 0x10202200 √ √ √ √ ? 第 2個操作數(shù) ▲ Rm—— 寄存器方式 在寄存器方式下,操作數(shù)即為寄存器的數(shù)值。 不管異常入口是來自 ARM狀態(tài)還是 Thumb狀態(tài), FIQ處理程序都會通過執(zhí)行下面的指令從中斷返回: SUBS PC,R14_fiq,4 在一個特權(quán)模式中,可以通過置位 CPSR中的 F位來禁止 FIQ異常。當(dāng)處理器處于一個特權(quán)模式時,可用軟件操作這些位。然后重裝 SUB R0,R0,R1 。 ? 當(dāng)發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。 寄存器類別 寄存器在匯編中的名稱 各模式下實際訪問的寄存器 用戶 系統(tǒng) 管理 中止 未定義 中斷 快中斷 通用寄存器和程序計數(shù)器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,v6) R9 R9_fiq R10(SL,v7) R10 R10_fiq R11(FP,v8) R11 R11_fiq R12(IP) R12 R12_fiq R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15(PC) R15 狀態(tài)寄存器 CPSR CPSR SPSR 無 SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 無 用戶無系統(tǒng)_svc 13_sv 管理_abt 13_abt 中止_und 13_und 未定義_irq 14_irq 13_irq 中斷_fiq 14_fiq 13_fiq iq 9_fiq 快中斷寄存器類別 寄存器在匯編中的名稱 各模式下實際訪問的寄存器 用戶 系統(tǒng) 管理 中止 未定義 中斷 快中斷 通用寄存器和程序計數(shù)器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,v6) R9 R9_fiq R10(SL,v7) R10 R10_fiq R11(FP,v8) R11 R11_fiq R12(IP) R12 R12_fiq R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15(PC) R15 狀態(tài)寄存器 CPSR CPSR SPSR 無 SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq 在匯編語言中寄存器R0~ R13為保存
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1