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

正文內(nèi)容

[教育學(xué)]第三章arm指令系統(tǒng)-wenkub.com

2025-01-18 13:10 本頁(yè)面
   

【正文】 MRC——協(xié)處理器寄存器 到 ARM寄存器的數(shù)據(jù)傳送指令 MRC指令將協(xié)處理器寄存器中的數(shù)據(jù)傳送到ARM處理器的寄存器中。 指令舉例如下: ? STC p5, c1, [R0] ? STC p5, c1, [R0, 0x04] 三、 MCR/MRC——ARM寄存器與 協(xié)處理器寄存器的數(shù)據(jù)傳送指令 MCR —— ARM寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令 MCR指令將 ARM處理器的寄存器中的數(shù)據(jù)傳送到協(xié)處理器的寄存器中。 ? LDC p6, c2, [R1] ;讀取 R1指向的內(nèi)存單元的數(shù)據(jù),傳送到協(xié)處理器 p6的 c2寄存器中。標(biāo)準(zhǔn)名為 pn, n為 0~15。進(jìn)行協(xié)處理器的數(shù)據(jù)傳送時(shí),由協(xié)處理器來(lái)控制傳送的字?jǐn)?shù)。 ? CDP p6, 1, c3, c4, c5 ;協(xié)處理器 6執(zhí)行 ;操作碼為 1的操作 指令特點(diǎn): – 該操作由協(xié)處理器完成,即對(duì)命令參數(shù)的解釋與協(xié)處理器有關(guān),指令的使用取決于協(xié)處理器。 ? CRn 存放第 1個(gè)操作數(shù)的協(xié)處理器寄存器。 指令格式如下: CDP{cond} CP, Cop1, CRd, CRn, CRm {,Cop2} 其中: ? CP 指令操作的協(xié)處理器名。 協(xié)處理器寄存器和內(nèi)存單元之間數(shù)據(jù)存 /取指令。 32MB的范圍內(nèi) 。 ? 若 Rm的位 [0]為 1,則跳轉(zhuǎn)時(shí)自動(dòng)將 CPSR中的標(biāo)志 T置位 ,即把目標(biāo)地址的代碼解釋為 Thumb代碼; ? 若 Rm的位 [0]為 0,則跳轉(zhuǎn)時(shí)自動(dòng)將 CPSR中的標(biāo)志 T復(fù)位 ,即把目標(biāo)地址的代碼解釋為 ARM代碼 。 CMP R1, 5 BLLT ADD11 ;有符號(hào)數(shù) BLGE SUB22 ;有符號(hào)數(shù) ≧ … ADD11 … SUB22 … 注: 如果 R15,只有 ADD11不改變條件碼,本例才能正常工作。 指令舉例如下: BL SUB1 ; LR?下條指令地址 ;轉(zhuǎn)至子程序 SUB1處 … SUB1 … MOV PC, LR ;子程序返回 注意: 轉(zhuǎn)移地址限制在當(dāng)前指令的 177。 ARM的分支轉(zhuǎn)移指令 , 可以從當(dāng)前指令向前或向后的 32MB的地址空間跳轉(zhuǎn) , 根據(jù)完成的功能它可以分為以下 4種 : B 分支指令 BL 帶鏈接的分支指令 BX 帶狀態(tài)切換的分支指令 BLX 帶鏈接和狀態(tài)切換的分支指令 B——轉(zhuǎn)移指令 指令格式如下: B{cond} label B指令跳轉(zhuǎn)到指定的地址執(zhí)行程序。 指令舉例如下: TEQ R0, R1 ;比較 R0與 R1是否相等 ; (不影響 V位和 C位 ) TEQ指令與 EORS指令的區(qū)別在于 TEQ指令不保存運(yùn)算結(jié)果。 TST指令通常與 EQ、 NE條件碼配合使用。 CMN指令與 ADDS指令的區(qū)別: 在于 CMN指令不保存運(yùn)算結(jié)果。 指令舉例如下: CMP R1, 10 ; R1與 10比較,設(shè)置相關(guān)標(biāo)志位 CMP指令與 SUBS指令的區(qū)別? ( 2) CMN——負(fù)數(shù)比較指令 指令格式如下: CMN{cond} Rn, operand2 CMN指令將寄存器 Rn的值加上 operand2的值,根據(jù)操作的結(jié)果更新 CPSR中的相應(yīng)條件標(biāo)志位,以便后面的指令根據(jù)相應(yīng)的條件標(biāo)志來(lái)判斷是否執(zhí)行。 方法: 當(dāng) PC寄存器作為目標(biāo)寄存器且指令中 S位被設(shè)置時(shí),指令在執(zhí)行跳轉(zhuǎn)操作的同時(shí),將當(dāng)前處理器模式的 SPSR寄存器內(nèi)容復(fù)制到 CPSR中。( 8位立即數(shù)位圖) – 實(shí)現(xiàn)單純的移位操作 。將某一位與 1做 BIC操作,該位值被設(shè)置成 0;將某一位與 0做 BIC操作,該位值不變。 指令舉例如下: EOR R1, R1, 0x0F ;將 Rl的低 4位取反 EORS R0, R5, 0x01 ;將 R0?R5異或 0x01, ; 并影響標(biāo)志位 EOR指令可用于將寄存器中某些位的值取反。R3 AND指令可用于提取寄存器中某些位的值。 – 對(duì) C標(biāo)志位: ARM v5及以上的版本 不影響 C標(biāo)志位; ARM v5以前的版本, C標(biāo)志位數(shù)值不確定。ARM7版本和后續(xù)的在名字中有 M的處理器才支持 64位乘法指令。 ? Rd、 RdHi、 RdLo不能與 Rm為同一寄存器。 指令舉例如下: UMLAL R0, R1, R5, R8 ;(R1,R0)?R5 R8+(R1,R0) 第 6次到此 SMULL—64位有符號(hào)乘法指令 指令格式如下: SMULL{cond}{S} RdLo, RdHi, Rm, Rs ; RdHi, RdLo? Rm*Rs SMULL指令將 Rm和 Rs中的值作有符號(hào)數(shù)相乘,結(jié)果的低 32位保存到 RdLo中,而高32位保存到 RdHi中。 助記符 說(shuō) 明 操 作 條件碼位置 MUL Rd,Rm,Rs 32位乘法指令 Rd?Rm*Rs(Rd≠Rm) MUA Rd,Rm,Rs,Rn 32位乘加指令 Rd?Rm*Rs+Rn (Rd≠Rm) UMULL RdL,RdH,Rm,Rs,Rn 64位無(wú)符號(hào)乘法 (RdL,RdH)?Rm*Rs UMAL RdL,RdH,Rm,Rs,Rn 64位無(wú)符號(hào)乘加 (RdL,RdH)?Rm*Rs SMULL RdL,RdH,Rm,Rs,Rn 64位有符號(hào)乘法 SMULL RdL,RdH,Rm,Rs,Rn 64位有符號(hào)乘加 MUL——32位乘法指令 指令格式如下: MUL{cond}{S} Rd, Rm, Rs ;Rd?Rm*Rs MUL指令將 Rm和 Rs中的值相乘,結(jié)果的低 32位保存到 Rd中。 指令舉例 SUBS R4, R0, R2 ;使用 SBC實(shí)現(xiàn) 64位減法, SBC R5, R1, R3 ; (R5,R4)= (R1,R0)(R3,R2) RSB——反向減法指令 指令格式如下: RSB{cond}{S} Rd, Rn, operand2 RSB指令用寄存器 operand2減去 Rn,結(jié)果保存到 Rd中。 數(shù)據(jù)處理指令的二進(jìn)制編碼 add r0, r1, 0xff add r0, r1, r1, LSL r2 add r0, r1, r1, LSL 31 數(shù)據(jù)處理指令的詳細(xì)列表 (未含 6條乘法指令) 操作碼 [24: 21] 助記符 意 義 效 果 0000 AND 邏輯位與 Rd = Rn AND Op2 0001 EOR 邏輯位異或 Rd = Rn EOR Op2 0010 SUB 減 Rd = Rn Op2 0011 RSB 反向減 Rd = Op2 – Rn 0100 ADD 加 Rd = Rn + Op2 0101 ADC 帶進(jìn)位加 Rd = Rn + Op2 + C 0110 SBC 帶進(jìn)位減 Rd = Rn Op2 + C 1 0111 RSC 反向帶進(jìn)位減 Rd = Op2 Rn + C 1 1000 TST 測(cè)試 根據(jù) Rn AND Op2設(shè)置條件碼 1001 TEQ 測(cè)試相等 根據(jù) Rn EOR Op2設(shè)置條件 1010 CMP 比較 根據(jù) Rn Op2設(shè)置條件碼 1011 CMN 負(fù)數(shù)比較 根據(jù) Rn + Op2設(shè)置條件碼 1100 ORR 邏輯位或 Rd = Rn OR Op2 1101 MOV 傳送 Rd = Op2 1110 BIC 位清零 Rd = Rn AND NOT Op2 1111 MVN 求反 Rd = NOT Op2 算術(shù)運(yùn)算指令 一、加減運(yùn)算指令 ADD——加法運(yùn)算指令 指令格式 ADD{cond}{S} Rd, Rn, operand2 ADD指令將 operand2的數(shù)據(jù)與 Rn的值相加,結(jié)果保存到 Rd寄存器。 pc = r1 + 0xffffff00 */ – ands pc, r1, r2 /* cpsr = spsr。在加減操作中,如果有溢出,則置1;不發(fā)生溢出,則清0。 – Z標(biāo)志位: 如果結(jié)果為0,則Z標(biāo)志位置1;否則清0。 ARM數(shù)據(jù)處理指令分類 22條可分為 5類: – 算術(shù)運(yùn)算指令: ADD ADC SUB SBC RSB RSC MUL MLA UMULL UMLAL SMULL SMLAL – 邏輯運(yùn)算指令: AND ORR EOR BIC – 數(shù)據(jù)傳送指令: MOV MVN – 比較指令: CMP CMN – 測(cè)試指令: TST TEQ 上述指令只能對(duì)寄存器操作,不能針對(duì)存儲(chǔ)器。 ARM數(shù)據(jù)處理指令的特點(diǎn) – 操作數(shù)來(lái)源: 所有的操作數(shù)要么來(lái)自寄存器,要么來(lái)自立即數(shù),不會(huì)來(lái)自存儲(chǔ)器。 三、 單寄存器交換指令( SWP) SWP指令 用于將一個(gè)存儲(chǔ)單元 (該單元地址放在寄存器Rn中 )的內(nèi)容讀取到一個(gè)寄存器 Rd中,同時(shí)將另一個(gè)寄存器 Rm的內(nèi)容寫入到該存儲(chǔ)單元中。 應(yīng)用舉例 ? LDMIA R0!, {R3 R9} ;加載 R0指向地址上的多字?jǐn)?shù)據(jù),保存到R3~R9中, R0值更新。 ( 7) 關(guān)于模式項(xiàng) LDM/STM的主要用途是現(xiàn)場(chǎng)保護(hù) 、 數(shù)據(jù)復(fù)制和參數(shù)傳送等 。 該用法可用于異常處理返回 。 ( 3) Reglist: 表示寄存器列表 , 可包含多個(gè)序號(hào)連續(xù)的或者分離的寄存器 , 用 “, ”分開 。 LDM為加載多個(gè)寄存器; STM為存儲(chǔ)多個(gè)寄存器 。 LDRSH R1, [R9] ;將 R9地址上的半字?jǐn)?shù)據(jù)讀出到 R1,高16位用符號(hào)位擴(kuò)展。 ( 2)兩點(diǎn)說(shuō)明: – 符 號(hào) 位 ——有符號(hào)字節(jié)或有符號(hào)半字的加載,用 “符號(hào)位 ”擴(kuò)展到 32位;無(wú)符號(hào)半字傳送是用 0擴(kuò)展到 32位。 ( 1)指令格式如下 LDR {cond}H Rd, 地址 ;加載無(wú)符號(hào)半字?jǐn)?shù)據(jù)到 Rd的低 16位 ,高 16位清零。 ? 把 PC存到存儲(chǔ)器的操作在不同體系結(jié)構(gòu)的處理器中產(chǎn)生不同的結(jié)果,應(yīng)盡可能避免。 ④ PC(即 R15)使用的幾個(gè)問(wèn)題 ? 使用 PC作為基址時(shí),使用的數(shù)值是指令的地址加 8個(gè)字節(jié)(取指與執(zhí)行相差 8個(gè)字節(jié))。這個(gè)數(shù)據(jù)可以加到基址寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。 – 不能與前變址模式、自動(dòng)變址模式一起使用(即不能改變基址寄存器值)。 LDR{cond}B{T} Rd, 地址 ;加載字節(jié)數(shù)據(jù)到 Rd中 , Rd最低字節(jié)有效, 高 24位為 0。 根據(jù)傳送數(shù)據(jù)的類型不同 , 單個(gè)寄存器存取指令又可以分為以下兩類: – 單字和無(wú)符號(hào)字節(jié)的加載 /存儲(chǔ)指令 – 半字和有符號(hào)字節(jié)的加載 /存儲(chǔ)指令 單字和無(wú)符號(hào)字節(jié)的加載/存儲(chǔ)指令 ? LDR: 指令從內(nèi)存中取 32位字或 8位無(wú)符號(hào)字節(jié)數(shù)據(jù)放入寄存器; ? S
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1