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

正文內(nèi)容

[教育學(xué)]第三章arm指令系統(tǒng)-文庫吧資料

2025-01-27 13:10本頁面
  

【正文】 ADDS R1, R1, 1 ; R1= R1+1 ADDS R3, R1, R2, LSL 2 ; R3=R1+R22 ADC——帶進(jìn)位加法指令 指令格式 ADC{cond}{S} Rd, Rn, operand2 ADC指令將 operand2的數(shù)據(jù)與 Rn的值相加,再加上 CPSR中的 C條件標(biāo)志位,結(jié)果保存到 Rd寄存器。 */ ? 在 user或者 system模式: 會產(chǎn)生不可預(yù)料的結(jié)果,因?yàn)樵谶@兩種模式下沒有 SPSR。 pc = r1 amp。 pc = 0xff */ – adds pc, r1, 0xffffff00 /* cpsr = spsr。 ( 3)關(guān)于恢復(fù) CPSR原值問題: 如果指令帶有 S后綴 (除了比較指令以外), 同時(shí)又以 PC為目標(biāo)寄存器進(jìn)行操作, ? 在異常模式下: 則操作的同時(shí)從 SPSR恢復(fù) CPSR。 – V標(biāo)志位: 在非加減操作中,V標(biāo)志位保持原值。 – C標(biāo)志位: 如果是加、減運(yùn)算指令或比較指令時(shí),C標(biāo)志位設(shè)置為ALU的進(jìn)位輸出;否則設(shè)置為移位器的移位輸出。 ( 2)對 CPSR中標(biāo)志位的影響: – N標(biāo)志位: 如果結(jié)果為負(fù),則N標(biāo)志位置1;否則清0。 數(shù)據(jù)處理指令對程序狀態(tài)寄存器 CPSR的影響 ( 1)選擇 “S”后綴問題: 指令中可以選擇 s后綴,以影響狀態(tài)標(biāo)志。 – 乘法指令的操作數(shù): 全部是寄存器。 – 操作結(jié)果: 如果有結(jié)果,則結(jié)果一定是為 32位寬、或 64位寬(長乘法指令),并且放在一個(gè)或兩個(gè)寄存器中,不會寫入存儲器。 ? SWPB R1, R2, [R0] ;將 R0指向的存儲單元的內(nèi)容讀取 1字節(jié)數(shù)據(jù)到 R1中 (高 24位清零 ),并將 R2的內(nèi)容寫入到該內(nèi)存單元中 (最低字節(jié)有效 ) 數(shù)據(jù)處理指令 主要內(nèi)容 數(shù)據(jù)處理指令概述 算術(shù)運(yùn)算指令 邏輯運(yùn)算指令 數(shù)據(jù)傳送指令 比較指令 測試指令 數(shù)據(jù)處理指令概述 ARM數(shù)據(jù)處理指令的功能 主要完成寄存器中數(shù)據(jù)的算術(shù)和邏輯運(yùn)算操作 。 指令格式 SWP{cond}{B} Rd, Rm, [Rn] – B為可選后綴 ,若有 B,則交換字節(jié),否則交換 32位字 – Rd為被加載的寄存器 – Rm的數(shù)據(jù) 用于存儲到 Rn所指的地址中 若 Rm與 Rd相同 ,則為寄存器與存儲器內(nèi)容進(jìn)行交換 – Rn為要進(jìn)行數(shù)據(jù)交換的存儲器地址, Rn不能與 Rd和Rm相同。 ? LDMFD SP!, {R0 R7, PC} ;恢復(fù)現(xiàn)場,包括 CPSR,異常處理返回, SP值更新。 ? STMIA R1!, {R3 R9} ;將 R3~ R9的數(shù)據(jù)存儲到 R1指向的地址上,R1值更新 。 其模式有如下 8種 ( 前面 4種用于數(shù)據(jù)塊的傳輸 ( 為加載寄存器 ), 后面 4種是堆棧操作 ): ?IA: 先傳、后地址加 4; ?IB: 先地址加 4 、后傳; ?DA:先傳、后地址減 4; ?DB:先地址減 4 、后傳; ?FD: 滿遞減堆棧,先減地址、后傳,與 IA對應(yīng); ?ED: 空遞減堆棧,先傳、后減地址,與 IB對應(yīng); ?FA: 滿遞增堆棧,先加地址、后傳,與 DA對應(yīng); ?EA: 空遞增堆棧,先傳、后加地址,與 DB對應(yīng)。 其模式有如下 8種 ( 前面 4種用于數(shù)據(jù)塊的傳輸 ( 為存儲操作 ) , 后面 4種是堆棧操作 ): ?IA: 先傳、后地址加 4; ?IB: 先地址加 4 、后傳; ?DA:先傳、后地址減 4; ?DB:先地址減 4 、后傳; ?FD: 滿遞減堆棧,先地址減 后傳,與 DB對應(yīng); ?ED: 空遞減堆棧,先傳、后地址減 4,與 DA對應(yīng); ?FA: 滿遞增堆棧,先地址加 后傳,與 IB對應(yīng); ?EA: 空遞增堆棧,先傳、后地址加 4,與 IA對應(yīng)。 ( 6)地址字對齊 ——這些指令尋址是字對齊的,即忽略地址位 [1:0]。 – 禁用情況: 后綴 “^”不允許在用戶模式或系統(tǒng)模式下使用 , 因?yàn)樗鼈儧]有 SPSR 。 – 寄存器列表包含有 PC: 除了正常的多寄存器傳送外 , 還要將 SPSR拷貝到 CPSR中 。 – 格式例子: {R1, R2, R6~R9} – 列表寄存器和存儲器地址的關(guān)系規(guī)則: 編號低的寄存器對應(yīng)于存儲器中低地址單元 , 編號高的寄存器對應(yīng)于存儲器中高地址單元 。 ( 2) Rn后綴 “!”:表示最后的地址寫回到 Rn中 。 這兩條指令 , 允許傳送 16個(gè)寄存器 R0R15的任何子集或所有寄存器 。 二、 多寄存器的存取指令 LDM和 STM指令 可以實(shí)現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間存 /取數(shù)據(jù) 。 LDRH R6, [R2], 2 ;將 R2地址上的半字?jǐn)?shù)據(jù)讀出到 R6,高 16位用零擴(kuò)展,然后修改 R2=R2+2。 ( 3)指令舉例 LDRSB R1, [R0, R3] ;將 R0+R3地址上的字節(jié)數(shù)據(jù)讀到R1,高 24位用符號位擴(kuò)展。 – 地址對齊 ——對半字傳送的地址必須為偶數(shù)。 存儲有符號數(shù)據(jù)和無符號數(shù)據(jù)之間沒有差別。 LDR {cond}SB Rd, 地址 ;加載指定地址上有符號字節(jié)到 Rd中,高24位用符號位擴(kuò)展 LDR {cond}SH Rd, 地址 ;加載指定地址上的有符號半字到 Rd中,高 16位用符號位擴(kuò)展。 – 立即數(shù)偏移量限定在 8位,寄存器偏移量不可經(jīng)過移位得到。 半字和有符號字節(jié)的加載/存儲指令 這類 LDR/STR指令可實(shí)現(xiàn)半字(有符號和無符號)、有符號字節(jié)數(shù)據(jù)的傳送。但是應(yīng)當(dāng)避免將一個(gè)字節(jié)加載到 PC。 ? PC不能用做偏移寄存器,也不能用于任何變址尋址模式。 指令舉例如下: ? LDR R1, [R0, R2, LSL 2] ;將 R0+R2 4地址處的數(shù)據(jù)讀出,保存到 R1中 (R0、 R2的值不變 ) ? LDR R1, [R0, R2, LSL 2] ;將 R0R2 4地址處的數(shù)據(jù)讀出,保存到R1中 (R0、 R2的值不變 ) 注意: 移位位數(shù)只能是 5位的立即數(shù),不能使用寄存器指定移位位數(shù)。 指令舉例如下: ? LDR R1, [R0, 0x12] ;將 R0+0x12地址處的數(shù)據(jù)讀出,保存到 R1中 (R0的值不變 ) ? LDR R1, [R0, 0x12] ;將 R00x12地址處的數(shù)據(jù)讀出,保存到 R1中 (R0的值不變 ) ② 寄存器 ——寄存器中的數(shù)值可以加到基址寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。 ① 立即數(shù) ——12位立即數(shù)可以是一個(gè)無符號的數(shù)值。 – T在用戶模式下無效。 – 用于存儲器保護(hù)。 STR{cond}B{T} Rd, 地址 ;存儲 Rd中字節(jié)數(shù)據(jù), Rd中最低字節(jié)為傳送數(shù)據(jù)。 STR{cond}{T} Rd, 地址 ;存儲 Rd中字?jǐn)?shù)據(jù),到指定地址的存儲單元。 ? 注意: – 無符號字節(jié)加載時(shí),用 0將 8位的操作數(shù)擴(kuò)展到 32位。 基本的加載 /存儲指令僅有 5條,分為 3種: — LDR和 STR,單寄存器加載 /存儲指令 — LDM和 STM,多寄存器加載 /存儲指令 — SWP,寄存器和存儲器數(shù)據(jù)交換指令 一、單寄存器的存取指令 單寄存器加載 /存儲指令是 ARM在寄存器和存儲器間傳送單個(gè)字節(jié)和字的最靈活方式 。 加載指令 用于將存儲器中的數(shù)據(jù)傳送到寄存器, 存儲指令 則完成相反的操作。 相對尋址指令舉例如下: BL SUBRl ;調(diào)用到 SUBRl子程序 . . . 。 F棧頂滿空; A棧增減 LDMIB*( Inc、 Befo):塊先增地址、再傳數(shù)。 塊拷貝尋址操作中的寄存器 , 可以是 R0R15這 16個(gè)寄存器的子集 ( 一部分 ) , 或是所有寄存器 。 r4 100 r5 FF r6 1234 r7 A0BE lr 8034 ABCD 8765 102E 16 FFFF 1010 1234 8420 9753 高地址 LDMFA sp!,{r4r7,pc} 滿遞增 SP 100 FF 1234 AOBE 8034 1010 1234 8420 9753 r4 1 r5 14544 r6 0 r7 12 pc 9020 100100 FF FF1234A0BE A0BEpc 8034 Old SP 100 FF 1234A0BE 8034 SP Old SP 1234A0BE8034STMFD sp!,{r4r7,lr} 滿遞減 8034 …… 塊拷貝尋址 一 、 塊拷貝尋址 ——把存儲器中的一個(gè)數(shù)據(jù)塊加載到多個(gè)寄存器中 , 或者是把多個(gè)寄存器中的內(nèi)容保存到存儲器中 。 ? 空遞增堆棧 EA: ——堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置 ,且由低地址向高地址生長 。 四種類型的堆棧工作方式 ? 滿遞增堆棧 FA( Full Ascending ) : ——堆棧指針指向最后壓入的數(shù)據(jù) , 且由低地址向高地址生長 。 根據(jù)堆棧指針指向的數(shù)據(jù)位置的不同,可分為: ? 滿堆棧 ——堆棧指針指向最后壓入堆棧的有效數(shù)據(jù)項(xiàng),稱為滿堆棧; ? 空堆棧 ——堆棧指針指向下一個(gè)待壓入數(shù)據(jù)的空位置,稱為空堆棧。 堆??煞譃閮煞N增長方式: 向上生長: 向高地址方向生長,稱為 遞增堆棧 。 如下所示: LDR r0, [r1, r2] ; r0—mem32[r1+r2] LDR r0, [r1, r2, LSL 2]; r0—mem32[r1+r2*4] 常用的是立即數(shù)偏移的形式 。 即先用基地址傳數(shù),然后修改基地址(基址 +偏移),也叫 后索引偏移 。 后變址模式 (修改基址寄存器 ): ——① 基址寄存器不加偏移作為操作數(shù)地址。②然后自動修改基址寄存器。 也叫 前索引偏移 。 變址尋址方式常用于訪問某基地址附近的地址單元。 第二條指令將 R0的內(nèi)容存儲到以 R1的值為地址的存儲單元中。R0←[R1] STR R0, [R1] 。 寄存器間接尋址 寄存器間接尋址 ——就是以 寄存器中的值作為操作數(shù)的地址 ,而操作數(shù)本身存放在存儲單元中。 31 0 C SUB R3, R2, R1, ROR 2 ; R3←R2+(R1 循環(huán)右移 2位 ) SUB R3, R2, R1, RRX R0 ; R3←R2 (R1帶進(jìn)位位循環(huán)右移 R0位 ) 第二操作數(shù)的移位位數(shù) 移位位數(shù)可以用立即數(shù)方式或者寄存器方式給出 ,其值均小于 32,應(yīng)為 031。 31 0 ( 6) RRX:帶進(jìn)位的循環(huán)右移 (Rotate Right Extended) 。如果源操作數(shù)是正數(shù),空出的最高有效位用 0 填充,如果是負(fù)數(shù)用 1填充。 ( 4) ASR:算術(shù)右移 (Arithmetic Shift Right) 。 0 31 0 0 ( 2) LSR:邏輯右移 ,空出的最高有效位用 0填充。 一、 寄存器尋址 如指令: ADD R0, R1, R2 ; R0←R1
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1