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

正文內(nèi)容

chap03arm微處理器體系結(jié)構(gòu)與指令集-資料下載頁

2025-05-12 13:57本頁面
  

【正文】 ; R4 ← [R0+12] ARM 指令的尋址方式 7.堆棧尋址 ① 根據(jù)堆棧指針指向來分 ? 堆棧指針指向最后一個(gè)壓入堆棧的數(shù)據(jù)時(shí),稱為滿堆棧 ? 堆棧指針指向下一個(gè)將要放入數(shù)據(jù)得空位置時(shí),稱為空堆棧 ② 堆棧的生成方式 ? 堆棧指針遞增計(jì)數(shù) ——遞增堆棧 ? 堆棧指針遞減計(jì)數(shù) ——遞減堆棧 ARM 指令的尋址方式 7.堆棧尋址 ③ ARM微處理器支持這四種類型的堆棧工作方式 ? 滿遞增堆棧 :堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成 ——{LDMFA, STMFA} ? 滿遞減堆棧 :堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成 ——{LDMFD, STMFD} ? 空遞增堆棧 :堆棧指針指向下一個(gè)將要放入數(shù)據(jù)得空位置,且由低地址向高地址生成 ——{LDMEA, STMEA} ? 空遞減堆棧 :堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成 ——{LDMEA, STMEA} LDMFD sp!,{r4r7,pc} SP 100 FF 1234 AOBE 8034 1010 1234 8420 9753 r4 1 r5 14544 r6 0 r7 12 lr 9048 pc 9020 100FF1234A0BE A0BE8034r4 100 r5 FF r6 1234 r7 A0BE lr 8034 ABCD 8765 102E 16 FFFF 1010 1234 8420 9753 存儲(chǔ)器頂 SP SP 100 FF 1234A0BE 8034SP Old SP ④ ARM堆棧操作通過塊傳送指令來完成 : ? STMFD (Push) 塊存儲(chǔ) Full Descending stack [STMDB] ? LDMFD (Pop) 塊裝載 Full Descending stack [LDMIA] STMFD sp!,{r4r7,lr} 7.堆棧尋址 0x80018 0x00000001 0x80014 0x00000002 0x80010 Empty 0x8000c Empty 0x80018 0x00000001 0x80014 0x00000002 0x80010 0x00000003 0x8000c 0x00000002 PRE 地址 數(shù)據(jù) POST 地址 數(shù)據(jù) SP SP PRE : r1=0x00000002, r4=0x00000003, sp=0x00080014 執(zhí)行指令: STMFD sp!, {r1,r4} POST: r1=0x00000002, r4=0x00000003, sp=0x0008000c 7.堆棧尋址 例:把寄存器內(nèi)容放入堆棧,更新 sp ARM指令集 1. ARM存儲(chǔ)器訪問指令 ( 1)加載 /存儲(chǔ)字和無符號(hào)字節(jié)指令 LDR和 STR ① LDR 字?jǐn)?shù)據(jù)加載指令 格式 : LDR{條件 } 目標(biāo)寄存器 ,存儲(chǔ)器地址 功能 : 從存儲(chǔ)器中將一個(gè) 32位的字?jǐn)?shù)據(jù)傳送到目的寄存器中。 LDR R0, [R1] 。 將存儲(chǔ)器地址為 R1的字?jǐn)?shù)據(jù)讀入寄存器 R0 LDR R0,[R1,R2] 。 將地址為 R1+R2的字?jǐn)?shù)據(jù)讀入寄存器 R0 LDR R0,[R1,# 8] 。 將地址為 R1+8的字?jǐn)?shù)據(jù)讀入寄存器 R0 LDR R0,[R1,R2]! 。 將地址為 R1+R2的字?jǐn)?shù)據(jù)讀入寄存器 R0,并將新地址 R1+ R2寫入 R1 1. ARM存儲(chǔ)器訪問指令 LDR R0,[R1,# 8]! ;將地址為 R1+8的字?jǐn)?shù)據(jù)讀入寄存器 R0,并將新地址 R1+ 8寫入 R1 LDR R0,[R1],R2 ;將地址為 R1的字?jǐn)?shù)據(jù)讀入寄存器 R0,并將新地址 R1+ R2寫入 R1 LDR R0,[R1,R2,LSL# 2]! ;將地址為 R1+ R2 4的字?jǐn)?shù)據(jù)讀入寄存器 R0,并將新地址 R1+ R2 4寫入 R1 LDR R0,[R1],R2,LSL# 2 ;將地址為 R1的字?jǐn)?shù)據(jù)讀入寄存器 R0,并將新地址 R1+ R2 4寫入 R1 1. ARM存儲(chǔ)器訪問指令 ② LDRB 字節(jié)數(shù)據(jù)加載指令 格式 : LDR{條件 }B 目標(biāo)寄存器 ,存儲(chǔ)器地址 功能:實(shí)現(xiàn)從存儲(chǔ)器中將一個(gè) 8位字節(jié)數(shù)據(jù)傳送到目的寄存器中,同時(shí)將寄存器的高 24位清零。通常用于從存儲(chǔ)器中讀取字節(jié)數(shù)據(jù)到通用寄存器,然后對(duì)數(shù)據(jù)進(jìn)行處理。 LDRB R0,[R1] ;將地址為 R1的字節(jié)數(shù)據(jù)讀入 R0,并將R0的高 24位清零。 LDRB R0,[R1,# 8] ;將地址為 R1+ 8的字節(jié)數(shù)據(jù)讀入 R0,將 R0高 24位清 0。 1. ARM存儲(chǔ)器訪問指令 ③ LDRH 半字?jǐn)?shù)據(jù)加載指令 格式 : LDR{條件 }H 目標(biāo)寄存器 ,存儲(chǔ)器地址 功能:從存儲(chǔ)器中將一個(gè) 16位的半字?jǐn)?shù)據(jù)傳送到目的寄存器中,同時(shí)將寄存器的高 16位清零。 說明:從存儲(chǔ)器中讀取 16位的半字?jǐn)?shù)據(jù)到通用寄存器,然后對(duì)數(shù)據(jù)進(jìn)行處理。當(dāng) PC為目的寄存器時(shí),指令從存儲(chǔ)器中讀取的字?jǐn)?shù)據(jù)被當(dāng)作目的地址,從而實(shí)現(xiàn)程序流程跳轉(zhuǎn)。 LDRH R0, [R1] ;將地址為 R1的半字?jǐn)?shù)據(jù)讀入寄存器R0,并將 R0的高 16位清零。 LDRH R0, [R1,# 8] ;將地址為 R1+ 8的半字?jǐn)?shù)據(jù)讀入寄存器 R0,并將 R0的高 16位清零。 1. ARM存儲(chǔ)器訪問指令 ④ STR 字?jǐn)?shù)據(jù)存儲(chǔ)指令 格式 : STR{條件 } 源寄存器 ,存儲(chǔ)器地址 功能:從源寄存器中將一個(gè) 32位的字?jǐn)?shù)據(jù)傳送到存儲(chǔ)器中。 STR R0, [R1],# 8 。 將 R0中的字?jǐn)?shù)據(jù)寫入以 R1為地址的存儲(chǔ)器中,并將新地址 R1+ 8寫入R1。 STR R0, [R1,# 8] 。 將 R0中的字?jǐn)?shù)據(jù)寫入以 R1+ 8為地址的存儲(chǔ)器 1. ARM存儲(chǔ)器訪問指令 ⑤ STRB 字節(jié)數(shù)據(jù)存儲(chǔ)指令 格式 : STR{條件 }B 源寄存器 ,存儲(chǔ)器地址 功能:將源寄存器中低 8位的字節(jié)數(shù)據(jù)傳送到存儲(chǔ)器中。 STRB R0, [R1] ;將寄存器 R0中的字節(jié)數(shù)據(jù)寫入以R1為地址的存儲(chǔ)器中。 STRB R0, [R1,# 8] ;將寄存器 R0中的字節(jié)數(shù)據(jù)寫入以 R1+ 8為地址的存儲(chǔ)器中 1. ARM存儲(chǔ)器訪問指令 ⑥ STRH 半字?jǐn)?shù)據(jù)存儲(chǔ)指令 格式 : STR{條件 }H 源寄存器 ,存儲(chǔ)器地址 功能:用于從源寄存器中將一個(gè) 16位的半字?jǐn)?shù)據(jù)傳送到存儲(chǔ)器中。半字?jǐn)?shù)據(jù)為源寄存器中的低 16位。 STRH R0, [R1] ;將寄存器 R0中的半字?jǐn)?shù)據(jù)寫入以R1為地址的存儲(chǔ)器中。 STRH R0, [R1,# 8] ;將寄存器 R0中的半字?jǐn)?shù)據(jù)寫入以R1+ 8為地址的存儲(chǔ)器中。 1. ARM存儲(chǔ)器訪問指令 ( 2)批量加載 /存儲(chǔ)指令 LDM和 STM ① LDM 批量數(shù)據(jù)加載指令 格式: LDM{條件 }模式 基址寄存器 {!},寄存器組 {^} ② STM 批量數(shù)據(jù)存儲(chǔ)指令 功能:將基址寄存器所指連續(xù)存儲(chǔ)區(qū)的內(nèi)容加載到寄存器組中。 格式 : STM{條件 }模式 基址寄存器 {!},寄存器組 {^} 功能:將寄存器組中的內(nèi)容存儲(chǔ)到基址寄存器所指示的連續(xù)存儲(chǔ)區(qū)中。 1. ARM存儲(chǔ)器訪問指令 STMFD R13!,{R0,R4R12,LR} 。 將寄存器列表中的寄存器( R0, R4到 R12, LR)存入堆棧。 LDMFD R13!,{R0,R4R12,PC} 。 將堆棧內(nèi)容恢復(fù)到寄存器( R0, R4到 R12, LR) 1. ARM存儲(chǔ)器訪問指令 ( 3)數(shù)據(jù)交換指令 SWP ① SWP 字?jǐn)?shù)據(jù)交換指令 格式: SWP{條件 } 目的寄存器,源寄存器 1, [源寄存器 2] 功能:將源寄存器 2所指向的存儲(chǔ)器中的字?jǐn)?shù)據(jù)傳送到目的寄存器中,同時(shí)將源寄存器 1中的字?jǐn)?shù)據(jù)傳送到源寄存器 2所指向的存儲(chǔ)器中。當(dāng)源寄存器 1和目的寄存器為同一個(gè)寄存器時(shí),指令交換該寄存器和存儲(chǔ)器的內(nèi)容。 SWP R0,R1,[R2] 。 R0←[R2], [R2]←R1 ; SWP R0,R0,[R1] 。 R0 ←→[R1] 1. ARM存儲(chǔ)器訪問指令 ② SWPB 字節(jié)數(shù)據(jù)交換指令 格式: SWPB{條件 } 目的寄存器,源寄存器 1, [源寄存器 2] SWPB R0,R1,[R2] 。 R0←[R2], [R2]←R1 SWPB R0,R0,[R1] 。 R0 ←→[R1] 功能:將源寄存器 2所指向的存儲(chǔ)器中的字節(jié)數(shù)據(jù)傳送到目的寄存器中,同時(shí)將源寄存器 1中的字節(jié)數(shù)據(jù)傳送到源寄存器 2所指向的存儲(chǔ)器中。 2. ARM數(shù)據(jù)處理指令 ( 1)數(shù)據(jù)傳送指令 ① MOV 數(shù)據(jù)傳送指令 格式: MOV{條件 }{S} 目的寄存器,源操作數(shù) 功能:可完成從另一個(gè)寄存器、被移位的寄存器或?qū)⒁粋€(gè)立即數(shù)加載到目的寄存器。其中 S選項(xiàng)決定指令的操作是否影響 CPSR中條件標(biāo)志位的值 MOV R1,R0 MOV PC,R14 MOV R1,R0,LSL# 3 。將 R0的值左移 3位后傳送到 R1 2. ARM數(shù)據(jù)處理指令 ② MVN 數(shù)據(jù)非傳送指令(數(shù)據(jù)取反傳送指令) 格式: MVN{條件 }{S} 目的寄存器,源操作數(shù) 功能:把源操作數(shù)取反后加載到目的寄存器。 說明:與 MOV指令不同之處是在傳送之前按位被取反 ——把一個(gè)被取反的值傳送到目的寄存器中 MVN R0,# 0 ;將 0取反傳送到 R0中,完成后 R0=1 ( 2)算術(shù)邏輯運(yùn)算指令 2. ARM數(shù)據(jù)處理指令 ① ADD 加法指令 格式: ADD{條件 }{S} 目的寄存器,操作數(shù) 1,操作數(shù) 2 作用:目的寄存器 =操作數(shù) 1+操作數(shù) 2 說明:操作數(shù) 1應(yīng)是一個(gè)寄存器,操作數(shù) 2可以是一個(gè)寄存器,被移位的寄存器,或一個(gè)立即數(shù)。 ADD R0, R1, R2 ADD R0, R1, 256 ADD R0, R2, R3, LSL 1 ADDS R1, R4, R7 ② SUB 減法指令 2. ARM數(shù)據(jù)處理指令 格式: SUB{條件 }{S} 目的寄存器,操作數(shù) 1,操作數(shù) 2 功能:目的寄存器 =操作數(shù) 1操作數(shù) 2 說明:該指令可用于有符號(hào)數(shù)或無符號(hào)數(shù)的減法運(yùn)算。 SUB R0, R1, R2 SUB R0, R1, 256 SUB R0, R2, R3, LSL1 2. ARM數(shù)據(jù)處理指令 ③ RSB 反向減法指令 格式: RSB{條件 }{S} 目的寄存器,操作數(shù) 1,操作數(shù) 2 功能: RSB指令稱為逆向減法指令,用于把操作數(shù) 2減去操作數(shù) 1,并將結(jié)果存放到目的寄存器中。 說明:該指令可用于有符號(hào)數(shù)或無符號(hào)數(shù)的減法運(yùn)算。 RSB R0,R1,R2 。 R0 = R2 – R1 RSB R0,R1,256 。 R0 = 256 – R1 RSB R0,R2,R3,LSL1 。 R0=(R31)R2 2. ARM數(shù)據(jù)處理指令 ④ ADC 帶進(jìn)位加法指令 格式: ADC{條件 }{S} 目的寄存器,操作數(shù) 1,操作數(shù) 2 作用:目的寄存器 =操作數(shù) 1+操作數(shù) 2+C 說明:可以做比 32位大的數(shù)的加法,注意不要忘記設(shè)置 S后綴來更改進(jìn)位標(biāo)志。 ADCS R2, R5, R8 。 R2=R5+R8+C 2. ARM數(shù)據(jù)處理指令 ⑤ SBC 帶借位減法指令 格式: SBC{條件 }{S} 目的寄存器,操作數(shù) 1,操作數(shù) 2 功能:目的寄存器 = 操作數(shù) 1 操作數(shù) 2! C 說明:該指令可以做大于 32位的減法,注意不要忘記設(shè)置 S后綴來更改進(jìn)位標(biāo)志。該指令可用于有符號(hào)數(shù)或無符號(hào)數(shù)的減法運(yùn)算。 SUBS R0, R1, R2 2. ARM數(shù)據(jù)處理指令 ⑥ RSC 帶借位反向減法指令 格式: RSC{條件 }{S} 目的寄存器,操作數(shù) 1,操作數(shù) 2 功能:目的寄存器 =操作數(shù) 2 操作數(shù) 1 ! C 說明:該指令可以做大于 32位的減法,注意不要忘記設(shè)置 S后綴來更改進(jìn)位標(biāo)志。該指令可用于有符號(hào)數(shù)或無符號(hào)數(shù)的減法運(yùn)算。 RSC R0, R
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1