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

正文內(nèi)容

第3章arm體系結(jié)構(gòu)(編輯修改稿)

2025-02-03 20:14 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 數(shù), 要求以“?!睘榍熬Y,對(duì)于以十六進(jìn)制表示的立即數(shù),還要求在“?!焙蠹由稀?0x”或“ ”。 37 ARM的尋址模式 2 寄存器尋址 寄存器尋址就是 利用寄存器中的數(shù)值作為操作數(shù) ,這種尋址方式是各類微處理器經(jīng)常采用的一種方式, 也是一種執(zhí)行效率較高的尋址方式 。以下指令: ADD R0, R1, R2 ; R0←R1 + R2 該指令的執(zhí)行效果是將寄存器 R1和 R2的內(nèi)容相加,其結(jié)果存放在寄存器 R0中。 38 ARM的尋址模式 3 寄存器間接尋址 寄存器間接尋址就是 以寄存器中的值作為操作數(shù)的地址,而操作數(shù)本身存放在存儲(chǔ)器中。 例如以下指令: LDR R0, [R1] ; R0←[R1] STR R0, [R1] ; [R1]←R0 第一條指令將以 R1 的值為地址的存儲(chǔ)器中的數(shù)據(jù)傳送到 R0 中。 第二條指令將 R0 的值傳送到以 R1 的值為地址的存儲(chǔ)器中。 39 ARM的尋址模式 4 基址變址尋址 基址變址尋址 就是將寄存器(該寄存器一般稱作基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址。 變址尋址方式 常用于訪問某基地址附近的地址單元 。采用變址尋址方式的指令常見有以下幾種形式,如下所示: LDR R0, [R1,# 4] ; R0←[R1 + 4] LDR R0, [R1,# 4]?。?R0←[R1 + 4]、 R1←R1 + 4 LDR R0, [R1] ,# 4 ; R0←[R1] 、 R1←R1 + 4 LDR R0, [R1, R2] ; R0←[R1 + R2] 在第一條指令中,將寄存器 R1 的內(nèi)容加上 4 形成操作數(shù)的有效地址,從而取得操作數(shù)存入寄存器 R0 中。 在第二條指令中,將寄存器 R1 的內(nèi)容加上 4 形成操作數(shù)的有效地址,從而取得操作數(shù)存入寄存器 R0 中,然后, R1 的內(nèi)容自增 4 個(gè)字節(jié)。 注意:“!”表示數(shù)據(jù)傳輸完畢后,更新基址寄存器的值,但基址寄存器不能為 R15—PC。 40 ARM的尋址模式 5多寄存器尋址 采用多寄存器尋址方式, 一條指令可以完成多個(gè)寄存器值的傳送。 這種尋址方式可以 用一條指令完成傳送最多 16 個(gè)通用寄存器的值。 以下指令: LDMIA R0, {R1, R2, R3, R4} ; R1←[R0] ; R2←[R0 + 4] ; R3←[R0 + 8] ; R4←[R0 + 12] 該指令的后綴 IA 表示在每次執(zhí)行完加載 /存儲(chǔ)操作后, R0 按字長(zhǎng)度增加 ,因此,指令可將連續(xù)存儲(chǔ)單元的值傳送到 R1~ R4。 41 ARM的尋址模式 6 跳轉(zhuǎn)尋址 相對(duì)尋址 以程序計(jì)數(shù)器 PC當(dāng)前值為基地址,指令中的標(biāo)號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。 例如: BL NEXT 。跳轉(zhuǎn)到子程序 NEXT處執(zhí)行 ……. NEXT ……. MOV PC, LR 。從子程序中返回 42 ARM的尋址模式 7 堆棧尋址 堆棧是一種數(shù)據(jù)結(jié)構(gòu) ,按 先進(jìn)后出 ( First In Last Out,F(xiàn)ILO)的方式工作,使用一個(gè)稱作 堆棧指針 的專用寄存器 指示當(dāng)前的操作位置,堆棧指針總是指向棧頂 。 當(dāng)堆棧指針 指向最后壓入堆棧的數(shù)據(jù)時(shí) ,稱為滿堆棧( Full Stack),而當(dāng)堆棧指針 指向下一個(gè)將要放入數(shù)據(jù)的空位置時(shí) ,稱為 空堆棧( Empty Stack)。 同時(shí),根據(jù)堆棧的生成方式,又可以分為遞增堆棧( Ascending Stack)和遞減堆棧( DecendingStack), 當(dāng)堆棧由低地址向高地址生成時(shí),稱為遞增堆棧,當(dāng)堆棧由高地址向低地址生成時(shí),稱為遞減堆棧。 注意: 不要以為空堆棧就是沒有內(nèi)容的堆棧,滿堆棧就是沒有空間的堆棧。 43 ARM尋址模式總結(jié) ① ARM的尋址模式采用加載 /存儲(chǔ)模式,因此 沒有直接在內(nèi)存中處理數(shù)據(jù)的尋址模式。 ② ARM尋址的字加載 存儲(chǔ)尋址是 4字節(jié)對(duì)齊,半字加載是 2字節(jié)對(duì)齊,不對(duì)齊不能訪問。 ③ ARM多寄存器的尋址模式 可以加快某些程序的執(zhí)行效率。 ④ 注意:以上 ARM尋址模式是適用于所有 ARM體系的,包括 ARM7的馮 .諾依曼結(jié)構(gòu)和 ARM9及以上的哈佛結(jié)構(gòu)。 44 ARM指令集 A R M核 心內(nèi) 存A R M 協(xié) 處 理 器加 載 指 令( L D R 等 )存 儲(chǔ) 指 令( S T R 等 )通 用 寄 存 器數(shù) 據(jù) 處 理 指 令狀 態(tài) 寄 存 器狀 態(tài) 寄 存 器訪 問 指 令協(xié) 處 理 器 指 令P C跳 轉(zhuǎn) 指 令乘 法 器乘 法 指 令同一個(gè)體系的ARM內(nèi)核的指令集是相同的 ,但是每條指令運(yùn)行的時(shí)間可能不同 。 45 ARM指令集:跳轉(zhuǎn)指令 跳轉(zhuǎn)實(shí)現(xiàn)的兩種方法: 1)使用專門的跳轉(zhuǎn)指令 2)直接向 PC寫入跳轉(zhuǎn)地址 (保存斷點(diǎn), 4GB連續(xù)線性地址空間) ARM 指令集中的跳轉(zhuǎn)指令可以完成 從當(dāng)前指令向前或向后的 32MB 的地址空間的跳轉(zhuǎn), 包括以下 4 條指令: ? B 跳轉(zhuǎn)指令,例如: B Label ;程序無(wú)條件跳轉(zhuǎn)至 Label處 ? BL 帶返回的跳轉(zhuǎn)指令 ? BLX 帶返回和狀態(tài)切換的跳轉(zhuǎn)指令 ? BX 帶狀態(tài)切換的跳轉(zhuǎn)指令 46 ARM指令集:數(shù)據(jù)處理指令 傳送指令: 寄存器之間數(shù)據(jù)傳輸 ? MOV 數(shù)據(jù)傳送指令 ? MVN 數(shù)據(jù)取反傳送指令 比較指令: 不保存結(jié)果,只更新CPSR,即使不加 S也自動(dòng)更新 ? CMP 比較指令 ? CMN 反值比較指令 ? TST 位測(cè)試指令 ? TEQ 相等測(cè)試指令 算術(shù)指令: 保存結(jié)果,更新 CPSR標(biāo)志位 ? ADD 加法指令 ? ADC 帶進(jìn)位加法指令 ? SUB 減法指令 ? SBC 帶借位減法指令 ? RSB 逆向減法指令 ? RSC 帶借位的逆向減法指令 ? AND 邏輯與指令 ? ORR 邏輯或指令 ? EOR 邏輯異或指令 ? BIC 位清除指令 47 ARM指令集:乘法指令 乘法指令與乘加指令: ? MUL 32 位乘法指令 ? MLA 32 位乘加指令 ? SMULL 64 位有符號(hào)數(shù)乘法指令 ? SMLAL 64 位有符號(hào)數(shù)乘加指令 ? UMULL 64 位無(wú)符號(hào)數(shù)乘法指令 ? UMLAL 64 位無(wú)符號(hào)數(shù)乘加指令 例如: MLAS R0,R1,R2,R3 。什么意思呢??? R0=R1XR2+R3,同時(shí)設(shè)置 CPSR相關(guān)條件標(biāo)志位 48 加載 /存儲(chǔ)指令 –寄存器存儲(chǔ)器之間傳送數(shù)據(jù) 單寄存器加載存儲(chǔ)指令: ? LDR 字?jǐn)?shù)據(jù)加載指令 ? LDRB 字節(jié)數(shù)據(jù)加載指令 ? LDRH 半字?jǐn)?shù)據(jù)加載指令 ? STR 字?jǐn)?shù)據(jù)存儲(chǔ)指令 ? STRB 字節(jié)數(shù)據(jù)存儲(chǔ)指令 ? STRH 半字?jǐn)?shù)據(jù)存儲(chǔ)指令 ? LDRSB有符號(hào)的字節(jié)加載 ? LDRSH有符號(hào)的半字加載 多寄存器加載存儲(chǔ)指令: ? LDM 多字節(jié)加載指令 ? STM 多字節(jié)存儲(chǔ)指令 ? IA :每次傳送后地址 +4 ? IB :每次傳送前地址 +4 ? DA :每次傳送后地址 4 ? DB :每次傳送前地址 4 ? FD :滿遞減堆棧 ? ED :空遞減堆棧 ? FA :滿遞增堆棧 ? EA :空遞增堆棧 加載指令:用于存儲(chǔ)器中的數(shù)據(jù)傳送到寄存器 存儲(chǔ)指令:用于寄存器中的數(shù)據(jù)傳送到存儲(chǔ)器 交換指令:存儲(chǔ)器與寄存器之間交換數(shù)據(jù),如: SWP、 SWPB 塊復(fù)制相關(guān) 堆棧操作相關(guān) 思考: STR R0,[R1],8 STR R0,[R1,8] STMFD R13!, {R0,R4R12,LR} LDMFD R13!, {R0,R4R12,PC} 49 程序狀態(tài)寄存器指令 ARM 微處理器支持程序狀態(tài)寄存器訪問指令, 用于在程序狀態(tài)寄存器和通用寄存器之間傳送數(shù)據(jù) ,程序狀態(tài)寄存器訪問指令包括以下兩條: ? MRS 程序狀態(tài)寄存器 到 通用寄存器 的數(shù)據(jù)傳送指令 ? MSR 通用寄存器 到 程序狀態(tài)寄存器 的數(shù)據(jù)傳送指令 ? 思考: MSR CPSR_c, R0 。什么意思???? 50 ARM 的協(xié)處理器指令 主要用于 ARM 處理器初始化 ARM 協(xié)處理器的數(shù)據(jù)處理操作,以及在 ARM 處理器的寄存器和協(xié)處理器的寄存器之間傳送數(shù)據(jù),和在 ARM 協(xié)處理器的寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)。 ARM 協(xié)處理器指令包括以下5 條: ? CDP 協(xié)處理器數(shù)操作指令 ? LDC 協(xié)處理器數(shù)據(jù)加載指令 ? STC 協(xié)處理器數(shù)據(jù)存儲(chǔ)指令 ? MCR ARM 處理器寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令 ? MRC 協(xié)處理器寄存器到 ARM 處理器寄存器的數(shù)據(jù)傳送指令 ARM指令集:協(xié)處理器指令 (選修) 51 異常產(chǎn)生指令(選修) ARM 微處理器所支持的異常指令有如下兩條: — SWI 軟件中斷指令 SWI 指令用于 產(chǎn)生軟件中斷 , 在控制方式中用于進(jìn)入管理員模式 , 以便用戶程序能調(diào)用操作系統(tǒng)的系統(tǒng)例程 。 操作系統(tǒng)在 SWI 的異常處理程序中提供相應(yīng)的系統(tǒng)服務(wù) , 指令中 24 位的立即數(shù)指定用戶程序調(diào)用系統(tǒng)例程的類型 。 指令示例: SWI 0x02;該指令調(diào)用操作系統(tǒng)編號(hào)為 02 的系統(tǒng)例程 。 — BKPT 斷點(diǎn)中斷指令 BKPT 指令的格式為: BKPT 16 位的立即數(shù) BKPT 指令產(chǎn)生軟件斷點(diǎn)中斷 , 可用于程序的調(diào)試 。 52 AREA Hell
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1