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

正文內(nèi)容

下載ppt文檔--資料下載頁

2024-10-17 20:53本頁面

【導(dǎo)讀】編程模型屏蔽了計(jì)算機(jī)硬件的具體細(xì)。用層的抽象模型。它既屏蔽了硬件電路的。狀態(tài)標(biāo)志位只有4位。有適合DSP處理的乘加指令。指令隱含決定運(yùn)算完畢后是否。專用條件判斷指令進(jìn)行程序分。運(yùn)算指令能夠訪問存儲器。ARM微處理器指令是加載/存儲型的,即。ARM指令集分為六類:。每條ARM指令包含4位條件碼域<cond>,它占用。指令編碼的最高四位[31:28]。條件編碼共24=16種,其中,15種用于指令的。每種條件碼用2個英文縮寫字符表示。只有在cpsr中的條件標(biāo)志位滿足指定的條件時,此也稱為條件后綴。立即數(shù),還要求在“?!焙蠹由稀?x”或“&”。由于ARM的指令機(jī)器碼長度為固定的32bit,其中,除了有操作數(shù),符合這種特征的立即數(shù)也稱作8位位圖。的數(shù)量上做限制。好像一個16位數(shù)在移位,16種移位可能)。能表示的情況是實(shí)際情況一半的矛盾。其余的無法表示的32位數(shù),只有通過其它途徑獲得了,比?!睌?shù)中,而4位“移位”數(shù)則為0.

  

【正文】 TEQ {cond} Rn, operand2 功能: TEQ( Test EQuivalence)指令將寄存器 Rn的值與 operand2進(jìn)行按位邏輯 ? 異或 ?操作,根據(jù)運(yùn)算的結(jié)果更新 CPSR中的相應(yīng)條件標(biāo)志位。本指令不影響原操作數(shù)。 86 2020/11/23 4. 分支指令 分支指令是一種重要的指令,分支指令用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn),分支指令共有 3條: B 。 分支指令 BL 。 帶返回的分支指令 BX 。 帶狀態(tài)切換的分支指令 87 B 分支指令 指令格式: B {cond} label 功能: B( Branch)指令跳轉(zhuǎn)到標(biāo)號指定的地址執(zhí)行程序。 也就是說: ARM 處理器一旦遇到 B 指令,將立即跳轉(zhuǎn)到給定的目標(biāo)地址 label處,即 PC=label( Label:表示偏移量 , 是一個 24位有符號立即數(shù)。) 說明: B指令的跳轉(zhuǎn)范圍 :32M~+32M 88 BL 帶返回的分支指令 指令格式: BL {cond} label 功能: BL( Branch with Link)指令先將下一條指令的地址拷貝到 R14(即 LR鏈接寄存器 )中,然后跳轉(zhuǎn)到標(biāo)號指定地址運(yùn)行程序。若要從分支返回調(diào)用處,可以通過重新把 R14的內(nèi)容裝載到 R15中來實(shí)現(xiàn), ARM處理器返回到這個分支指令之后的下一條指令處繼續(xù)執(zhí)行。 BL指令常用于子程序調(diào)用,也稱為子程序調(diào)用指令。 89 ? 90 BL指令示例: … BL func ADD R1,R2,2 … func … ;子程序 … ;子程序代碼 MOV R15, R14 ; 跳轉(zhuǎn)到子程序 子程序調(diào)用完返回后執(zhí)行的語句,返回地址 復(fù)制返回地址到 PC,實(shí)現(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代碼。該指令用于處理器狀態(tài)切換。 西安郵電學(xué)院 計(jì)算機(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. 雜項(xiàng)指令 ARM雜項(xiàng)指令是 2條專用于程序狀態(tài)字寄存器( CPSR、 SPSR)訪問的 ARM指令;在應(yīng)用中,主要用于處理器的中斷屏蔽控制和處理器模式轉(zhuǎn)換 ,雜項(xiàng)指令共有 2條: MRS : 讀狀態(tài)寄存器指令 MSR : 寫狀態(tài)寄存器指令 95 MRS 狀態(tài)寄存器 讀指令 指令格式: MRS {cond} Rd, CPSR|SPSR 功能: MRS指令將 CPSR或 SPSR中的內(nèi)容裝入到一個通用寄存器中。(其中 Rd不能是 R15) MRS指令示例: MRS R0, CPSR 。 傳送 CPSR的內(nèi)容到 R0 MRS R2, SPSR 。 傳送 SPSR的內(nèi)容到 R2 96 MSR 狀態(tài)寄存器 寫指令 指令格式: 11010011 MSR {cond} CPSR|SPSR_fields, Rm|immed 功能: MSR指令用于將操作數(shù)的內(nèi)容傳送到程序狀態(tài)寄存器的 特定域中 。其中,狀態(tài)寄存器是指 CPSR或 SPSR,一般指當(dāng)前工作模式下的狀態(tài)寄存器。操作數(shù)可以為通用寄存器 Rm或立即數(shù) immed。 ? 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 。 CPSR[7…0]=0xD3 ,即切換到管理模式 MSR CPSR_cxsf, R3 。 CPSR=R3 10011 管理 MSR指令說明 ? 程序中不能通過 MSR指令直接修改 CPSR中的 T控制位來實(shí)現(xiàn) ARM狀態(tài) /Thumb狀態(tài)的切換,必須使用 BX指令完成處理器狀態(tài)的切換 (因?yàn)?BX指令屬分支指令,它會打斷流水線狀態(tài),實(shí)現(xiàn)處理器狀態(tài)切換 )。 ? MRS與 MSR配合使用,實(shí)現(xiàn) CPSR或 SPSR寄存器的讀一修改一寫操作,可用來進(jìn)行處理器模式切換、允許 /禁止 IRQ/FIQ中斷等設(shè)置,如下面的程序清單所示。 使能 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指令(也稱為軟件中斷指令)先切換處理器模式到‘管理模式’,在管理模式下完成受限資源的訪問,之后再返回用戶模式。本指令主要是為編寫操作系統(tǒng)而提供。 102 指令格式: SWI {cond} immed_24 功能: SWI( SoftWare Interrupt)指令用于產(chǎn)生軟中斷,引起 SWI異常,使得處理器模式從用戶模式切換到管理模式,因此也稱為“監(jiān)控調(diào)用”;在切換時, CPSR寄存器內(nèi)容將被保存到管理模式的 SPSR中,同時程序跳轉(zhuǎn)到 SWI異常向量入口處。在其它模式下也可使用 SWI指令,處理器同樣會切換到管理模式。 軟中斷指令,后面用 24位立即數(shù)表示軟中斷類型, cpu遇到這條指令會跳轉(zhuǎn)到中斷向量表中軟中斷指令處,然后根據(jù)那條指令跳轉(zhuǎn)到 swi handler,在 swi handler中需要通過 LR寄存器,用指令 LDR R0,[LR,4]。BIC R0,R0,0xff000000來獲得那個 24位立即數(shù) (LR中保存的是SWI 0x123456的下一條指令地址,也就是軟中斷返回地址 ),然后做進(jìn)一步處理 獲得 SWI指令的立即數(shù)(續(xù)) T_bit EQU 0x20 SWI_Handler STMFD SP!, {R0- R3, R12, LR};現(xiàn)場保護(hù) MRS R0, SPSR ;讀取 SPSR STMFD SP!, {R0} ;保存 SPSR TST R0, T_bit ;測試 T標(biāo)志位,CPSR第 M5位 ; T=1表明執(zhí)行 Thumb指令 LDREQH R0, [LR,- 2] ;若是 Thumb指令,則讀取指令碼 (16位 ) BICEQ R0, R0,0xFF00 ;取得 Thumb指令的 8位立即數(shù) LDRNE R0, [LR,- 4] ;若是 ARM指令,則讀取指令碼 (32位 ) BICNE R0, R0, 0xFF000000 ;取得 ARM指令的 24位立即數(shù) … LDMFD SP!, {R0- R3, R12, PC} ; SWI異常中斷返回 指令 指令所在地址 ADD R2, R1, R3 。0x300000 SWI 0x98 。0x300004 MOV R1,2 。0x300008 SWI指令執(zhí)行后,進(jìn)入 SWI異常處理程序,此時 R14中保存的返回地址為0x300008。 所以,在 SWI異常處理子程序中執(zhí)行 LDR R0, [LR,4]語句,實(shí)際就是把產(chǎn)生本次 SWI異常的 SWI指令的內(nèi)容 (如:SWI 0x98)裝進(jìn) R0寄存器。又因?yàn)?SWI指令的低 24位保存了指令的操作數(shù) (如: 0x98),所以再執(zhí)行 BIC R0, R0,0xFF000000語句,就可以獲得immed_24操作數(shù)的實(shí)際內(nèi)容。 104 ARM偽指令不屬于 ARM指令集中的指令 , 是為了編程方便而定義的 。 偽指令可以像其它 ARM指令一樣使用 , 但在編譯時這些指令將被等效的 ARM指令代替 。 反匯編代碼 源程序 偽指令 實(shí)際指令 編譯器 實(shí)際指令 實(shí)際指令 7. ARM偽指令 105 ARM偽指令有四條: ? 小范圍地址讀取指令: ADR ? 中等范圍地址讀取指令: ADRL ? 大等范圍地址讀取指令: LDR ? 空操作指令: NOP 106 ADR 小范圍的地址讀取偽指令 指令格式: ADR {cond} Rm, addr 功能: ADR指令將基于 PC相對偏移的地址值或基于寄存器相對偏移的地址值讀取到寄存器中。在匯編編譯源程序時, ADR偽指令被編譯器替換成一條合適的指令。所以在程序設(shè)計(jì)時不需要關(guān)心相對PC的偏移量,也不需要計(jì)算偏移量。僅簡單地使用? ADR Rd, label”,則編譯器會試圖產(chǎn)生一條ADD指令或 SUB指令,來實(shí)現(xiàn)該 ADR偽指令的功能,向寄存器 Rd加載地址。 107 尋址范圍: ? 當(dāng)?shù)刂分凳欠亲謱R時,取值范圍- 255~ 255字節(jié)之間; ? 當(dāng)?shù)刂分凳亲謱R時,取值范圍- 1020~ 1020字節(jié)之間。 ? 對于基于 PC相對偏移的地址值時,給定范圍是相對當(dāng)前指令地址后兩個字處 Start MOV r0, 0x10 ADR R1,start 在匯編編譯器處理源程序時替換為 SUB R1,pc,0xc 108 例:使用 ADR偽指令加載地址,實(shí)現(xiàn)查表功能。 …… ADR R0,DISP_
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1