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

正文內(nèi)容

下載ppt文檔-(參考版)

2024-10-21 20:53本頁面
  

【正文】 ? 對于基于 PC相對偏移的地址值時,給定范圍是相對當(dāng)前指令地址后兩個字處 Start MOV r0, 0x10 ADR R1,start 在匯編編譯器處理源程序時替換為 SUB R1,pc,0xc 108 例:使用 ADR偽指令加載地址,實現(xiàn)查表功能。僅簡單地使用? ADR Rd, label”,則編譯器會試圖產(chǎn)生一條ADD指令或 SUB指令,來實現(xiàn)該 ADR偽指令的功能,向寄存器 Rd加載地址。在匯編編譯源程序時, ADR偽指令被編譯器替換成一條合適的指令。 偽指令可以像其它 ARM指令一樣使用 , 但在編譯時這些指令將被等效的 ARM指令代替 。又因為 SWI指令的低 24位保存了指令的操作數(shù) (如: 0x98),所以再執(zhí)行 BIC R0, R0,0xFF000000語句,就可以獲得immed_24操作數(shù)的實際內(nèi)容。0x300008 SWI指令執(zhí)行后,進(jìn)入 SWI異常處理程序,此時 R14中保存的返回地址為0x300008。0x300000 SWI 0x98 。 軟中斷指令,后面用 24位立即數(shù)表示軟中斷類型, cpu遇到這條指令會跳轉(zhuǎn)到中斷向量表中軟中斷指令處,然后根據(jù)那條指令跳轉(zhuǎn)到 swi handler,在 swi handler中需要通過 LR寄存器,用指令 LDR R0,[LR,4]。 102 指令格式: SWI {cond} immed_24 功能: SWI( SoftWare Interrupt)指令用于產(chǎn)生軟中斷,引起 SWI異常,使得處理器模式從用戶模式切換到管理模式,因此也稱為“監(jiān)控調(diào)用”;在切換時, CPSR寄存器內(nèi)容將被保存到管理模式的 SPSR中,同時程序跳轉(zhuǎn)到 SWI異常向量入口處。 使能 IRQ中斷(開中斷) MRS R0, CPSR BIC R0, R0, 0x80 MSR CPSR_c, R0 MOV PC, LR 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 FIQ禁止 Fast 狀態(tài)位 Thumb 模式位 Mode CPSR寄存器的格式 IRQ禁止 Interrupt 禁能 IRQ中斷(關(guān)中斷) MRS R0 CPSR ORR R0, R0, 0x80 MSR CPSR_c, R0 MOV PC, LR I位 =1 關(guān)中斷 堆棧指令初始化 INITSTACK MOV R0, LR ;保存返回地址 MSR CPSR_c, 0xD3 LDR SP, StackSvc ;設(shè)置管理模式堆棧, M[4:0]=0b10011 MSR CPSR_c, 0xD2 LDR SP, StackIrq ;設(shè)置中斷模式堆棧, M[4:0]=0b10010 MOV PC, R0 101 6 . 軟中斷指令 在用戶模式下,有一些資源不能訪問,如確需訪問時,可使用 SWI指令(也稱為軟件中斷指令)先切換處理器模式到‘管理模式’,在管理模式下完成受限資源的訪問,之后再返回用戶模式。 CPSR=R3 10011 管理 MSR指令說明 ? 程序中不能通過 MSR指令直接修改 CPSR中的 T控制位來實現(xiàn) ARM狀態(tài) /Thumb狀態(tài)的切換,必須使用 BX指令完成處理器狀態(tài)的切換 (因為 BX指令屬分支指令,它會打斷流水線狀態(tài),實現(xiàn)處理器狀態(tài)切換 )。 ? fields: 用于設(shè)置狀態(tài)寄存器中需要操作的位, 32位的狀態(tài)寄存器可分為 4個域: ? [31:24]: 條件標(biāo)志位域 , 用 f表示; ? [23:16]: 狀態(tài)位域 , 用 s表示; ? [15: 8]: 擴(kuò)展位域 , 用 x表示; ? [ 7: 0]: 控制位域 , 用 c表示; MSR CPSR_c, 0xD3 。其中,狀態(tài)寄存器是指 CPSR或 SPSR,一般指當(dāng)前工作模式下的狀態(tài)寄存器。 傳送 CPSR的內(nèi)容到 R0 MRS R2, SPSR 。 西安郵電學(xué)院 計算機(jī)系 92 2020/11/23 93 BX指令示例: CODE32 arm1 ADR R0, thumb1+1 MOV LR, PC BX R0 ;跳轉(zhuǎn) ADD R1, R2, 2 CODE16 thumb1 ADD R1, R3, 1 ; THUMB程序 … BX LR ;跳轉(zhuǎn)到返回地址處 94 5. 雜項指令 ARM雜項指令是 2條專用于程序狀態(tài)字寄存器( CPSR、 SPSR)訪問的 ARM指令;在應(yīng)用中,主要用于處理器的中斷屏蔽控制和處理器模式轉(zhuǎn)換 ,雜項指令共有 2條: MRS : 讀狀態(tài)寄存器指令 MSR : 寫狀態(tài)寄存器指令 95 MRS 狀態(tài)寄存器 讀指令 指令格式: MRS {cond} Rd, CPSR|SPSR 功能: MRS指令將 CPSR或 SPSR中的內(nèi)容裝入到一個通用寄存器中。 89 ? 90 BL指令示例: … BL func ADD R1,R2,2 … func … ;子程序 … ;子程序代碼 MOV R15, R14 ; 跳轉(zhuǎn)到子程序 子程序調(diào)用完返回后執(zhí)行的語句,返回地址 復(fù)制返回地址到 PC,實現(xiàn)子程序的返回 91 BX 帶狀態(tài)切換的分支指令 指令格式: BX {cond} Rm 功能: BX( Branch and optionally eXchange)指令跳轉(zhuǎn)到 Rm指定的地址處執(zhí)行程序,若Rm[0]為 1,則跳轉(zhuǎn)時自動將 CPSR中的標(biāo)志 T置位,即把目標(biāo)地址的代碼解釋為 Thumb代碼;若 Rm [0]為 0,則跳轉(zhuǎn)時自動將 CPSR中的標(biāo)志 T清零,即把目標(biāo)地址的代碼解釋為ARM代碼。若要從分支返回調(diào)用處,可以通過重新把 R14的內(nèi)容裝載到 R15中來實現(xiàn), ARM處理器返回到這個分支指令之后的下一條指令處繼續(xù)執(zhí)行。 也就是說: ARM 處理器一旦遇到 B 指令,將立即跳轉(zhuǎn)到給定的目標(biāo)地址 label處,即 PC=label( Label:表示偏移量 , 是一個 24位有符號立即數(shù)。 帶返回的分支指令 BX 。 86 2020/11/23 4. 分支指令 分支指令是一種重要的指令,分支指令用于實現(xiàn)程序流程的跳轉(zhuǎn),分支指令共有 3條: B 。 85 TEQ 相等測試指令 指令格式: TEQ {cond} Rn, operand2 功能: TEQ( Test EQuivalence)指令將寄存器 Rn的值與 operand2進(jìn)行按位邏輯 ? 異或 ?操作,根據(jù)運(yùn)算的結(jié)果更新 CPSR中的相應(yīng)條件標(biāo)志位。 ?這里操作數(shù) operand2可以看作一個 32位的掩碼,如果在掩碼中設(shè)置了某一位,表示檢查該位。 84 TST 位測試指令 指令格式: TST {cond} Rn, operand2 功能: TST( TeST)指令將寄存器 Rn的值與operand2進(jìn)行按位邏輯 ? 與 ? 操作,根據(jù)運(yùn)算的結(jié)果更新 CPSR中的相應(yīng)條件標(biāo)志位。 ?該指令 實際上是將操作數(shù) Rn和操作數(shù)operand2相加 ,并根據(jù)結(jié)果更改條件標(biāo)志位。程序 Fun 1 的入口地址 DCD Fun2 。否則程序返回 DCD Fun0 。將 R0與常數(shù) 3 進(jìn)行比較 LDRLO PC, [PC, R0, LSL 2] 。 后面的指令就可以根據(jù)條件標(biāo)志位來決定是否執(zhí)行。 相等測試指令 81 CMP 比較指令 指令格式: CMP {cond} Rn, operand2 功能: CMP( CoMPare)指令把 Rn寄存器的數(shù)據(jù)與數(shù)據(jù) operand2進(jìn)行試減比較,比較后的結(jié)果影響CPSR寄存器中的相應(yīng)條件標(biāo)志位,不保存試減的結(jié)果。 反值比較指令 TST 。 比較指令包括: CMP 。 BIC R0, R0, 0x0F ; 將 R0的低 4位清零 BIC R0, R0, 9 ; 將 R0的第 0位和第 3位清 0 80 3 比較指令 比較指令通常用于把一個寄存器與一個 32位的值進(jìn)行比較或測試 , 根據(jù)結(jié)果更新 CPSR中的標(biāo)志位,但不影響其它的寄存器。 即: Rd=Rn AND (!operand2) ? operand2可以看作一個 32位的 掩碼 ,如果在掩碼中設(shè)置了某一位,則清除 Rn中相應(yīng)的位。 ? 該指令常用于將操作數(shù)的特定位置位的操作 ORR R0, R0, 0x0F ; R0=R0∨ 0x0F,實現(xiàn)將 R0的低 4位置 1 78 EOR 邏輯“異或”指令 指令格式: EOR {cond} {S} Rd, Rn, operand2 功能:本指令將 Rn的值和 operand2的值進(jìn)行按位邏輯 ? 異或 ? 操作,結(jié)果保存到目標(biāo)寄存器( Rd)。 ? 該指令常用于將操作數(shù)的特定位清零的操作 AND R0, R0, 0xff ; R0=R0amp。 代碼: SUBS R0, R0, R2 ; 運(yùn)算低 32bit,可能產(chǎn)生借位 SBCS R1, R1, R3 ; 帶進(jìn)(借)位計算高 32比特 75 RSC 帶進(jìn)位逆向減法指令 指令格式: RSC {cond} {S} Rd, Rn, operand2 功能: RSC( Reverse Subtract with Carry)指令將operand2的值減去 Rn的值,再減去 CPSR寄存器中 C條件標(biāo)志位,結(jié)果保存到目標(biāo)寄存器( Rd)。 分析: ARM處理器字長 32bit,可用 2個寄存器為一組表示一個 64bit數(shù)據(jù)。 代碼: ADDS R0, R0, R2 ; 運(yùn)算低 32bit,可能產(chǎn)生進(jìn)位 ADC R1, R1, R3 ; 帶進(jìn)位計算高 32比特 73 SBC 帶進(jìn)位減法指令 指令格式: SBC {cond} {S} Rd, Rn, operand2 功能: SBC( SuBtract with Carry)指令將 Rn的值減去 operand2的值,再減去 CPSR寄存器中 C條件標(biāo)志位的 ? 非 ? (若 C標(biāo)志位清零,則結(jié)果減去 1),結(jié)果保存到目標(biāo)寄存器( Rd)。 分析: ARM處理器字長 32bit,可用 2個寄存器為一組表示一個 64bit數(shù)據(jù)。 RSB指令示例: RSB R0, R1, R1 LSL 2 ; R0=R1 4R1 = R1 3 RSBS R0, R1, 0xFF00 ; R0=0xFF00R1 71 ADC 帶進(jìn)位加法指令 指令格式: ADC {cond} {S} Rd, Rn, operand2 功能: ADC( ADd with Carry)指令將 R
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1