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

正文內(nèi)容

[教育學]第三章arm指令系統(tǒng)-在線瀏覽

2025-03-10 13:10本頁面
  

【正文】 : STR r0,[r1],12 三、偏移地址形式 ——可以是一個立即數(shù) , 也可以是另一個寄存器 , 并且還可以是寄存器移位操作 。 堆棧尋址 堆棧尋址 ——堆棧尋址是隱含的,它使用一個專門的寄存器(堆棧指針 SP)指向一塊存儲區(qū)域 (堆棧 )。 向下生長: 向低地址方向生長,稱為 遞減堆棧 。 這樣就有 4種類型的堆棧表示遞增和遞減的滿和空堆棧的各種組合。 ? 滿遞減堆棧 FD: ——堆棧指針指向最后壓入的數(shù)據(jù) , 且由高地址向低地址生長 。 ? 空遞減堆棧 ED( Empty Descending ) : ——堆棧指針指向下一個將要放入數(shù)據(jù)的空位置 ,且由高地址向低地址生長 。 應(yīng)用指令: 塊拷貝尋址是多寄存器傳送指令 LDM/STM的尋址方式 , 因此 也叫多寄存器尋址 。 二、 4種尋址操作 LDMIA / STMIA Increment After(先傳送,后地址加4) LDMIB / STMIB Increment Before(先地址加 4 ,后傳送 ) LDMDA / STMDA Decrement After(先傳送,后地址減4) LDMDB / STMDB Decrement Before (先地址減 4,后傳送 ) IA r1 地址 增加 r4 r0 r1 r4 r0 r1 r4 r0 r1 r4 r0 r10 IB DA DB STMxx r10, {r0,r1,r4} 基址寄存器 (Rn) 地址遞減,指針最后位置 地址遞增,指針最后位置 棧生長 地址 頂空滿 增減次序 棧 、 塊遞增 棧 、 塊遞減 頂滿 頂空 頂滿 頂空 地址 增加 先增 STMIB STMFA LDMIB LDMED 后增 STMIA STMEA LDMIA LDMFD 地址 減少 先減 LDMDB LDMEA STMDB STMFD 后減 LDMDA LDMFA STMDA STMED 多寄存器 load和 stroe指令的堆棧和塊拷貝對照 STMFA( Full、 Add):棧滿遞增。 相對尋址 相對尋址 —— 與基址變址尋址方式相類似 , 相對尋址以程序計數(shù)器 PC的當前值為基地址 , 指令中的地址標號作為偏移量 , 將兩者相加之后得到操作數(shù)的有效地址 。 SUBRl應(yīng)為 24位有符號數(shù) SUBR1 … … MOV PC, LR ;返回 ARM指令集 主要內(nèi)容 存儲器訪問指令 數(shù)據(jù)處理指令 分支指令 協(xié)處理器指令 雜項指令 ARM偽指令 存儲器訪問指令 ARM微處理器用加載 /存儲指令訪問存儲器,實現(xiàn)在寄存器和存儲器之間傳送數(shù)據(jù)。 由于 ARM處理器對外設(shè)寄存器、 I/O映射空間與存儲器統(tǒng)一編址,因此,對外圍設(shè)備的 I/O操作也用此類指令。 根據(jù)傳送數(shù)據(jù)的類型不同 , 單個寄存器存取指令又可以分為以下兩類: – 單字和無符號字節(jié)的加載 /存儲指令 – 半字和有符號字節(jié)的加載 /存儲指令 單字和無符號字節(jié)的加載/存儲指令 ? LDR: 指令從內(nèi)存中取 32位字或 8位無符號字節(jié)數(shù)據(jù)放入寄存器; ? STR: 指令將寄存器中的 32位字或 8位無符號字節(jié)數(shù)據(jù)保存到存儲器中。 ( 1)指令格式 LDR{cond}{T} Rd, 地址 ;加載指定地址上的字數(shù)據(jù),放入 Rd中。 LDR{cond}B{T} Rd, 地址 ;加載字節(jié)數(shù)據(jù)到 Rd中 , Rd最低字節(jié)有效, 高 24位為 0。 ? T后綴 – T為可選后綴,若指令有 T,那么即使處理器是在特權(quán)模式下,存儲系統(tǒng)也將訪問看成是處理器是在用戶模式下。 – 不能與前變址模式、自動變址模式一起使用(即不能改變基址寄存器值)。 ( 2)操作數(shù)尋址方式 LDR/STR指令為變址尋址 ,由兩部分組成: – 基地址部分: 為一個基址寄存器,可以為任一個通用寄存器; – 偏移地址部分: 這一部分非常靈活,實際就是第二個操作數(shù),可以有以下 3種格式: ?立即數(shù) ?寄存器 ?寄存器及移位常數(shù)。這個數(shù)據(jù)可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。 指令舉例如下: ? LDR R1, [R0, R2] ;將 R0+R2地址處的數(shù)據(jù)讀出,保存到 R1中 ? LDR R1, [R0, R2] ;將 R0R2地址處的數(shù)據(jù)讀出,保存到 R1中 ③ 寄存器及移位常數(shù) ——寄存器移位后的值可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。 ④ PC(即 R15)使用的幾個問題 ? 使用 PC作為基址時,使用的數(shù)值是指令的地址加 8個字節(jié)(取指與執(zhí)行相差 8個字節(jié))。 ? 把一個字加載到 PC,將使程序轉(zhuǎn)移到所加載的地址,這是一個公認的實現(xiàn)跳轉(zhuǎn)的方法。 ? 把 PC存到存儲器的操作在不同體系結(jié)構(gòu)的處理器中產(chǎn)生不同的結(jié)果,應(yīng)盡可能避免。 特點: – 偏移量格式、尋址方式與加載/存儲字和無符號字節(jié)指令基本相同。 ( 1)指令格式如下 LDR {cond}H Rd, 地址 ;加載無符號半字數(shù)據(jù)到 Rd的低 16位 ,高 16位清零。 STR{cond}H Rd, 地址 ;存儲 Rd中的低 16位半字數(shù)據(jù)。 ( 2)兩點說明: – 符 號 位 ——有符號字節(jié)或有符號半字的加載,用 “符號位 ”擴展到 32位;無符號半字傳送是用 0擴展到 32位。非半字對齊的半字加載將使 Rd內(nèi)容不可靠;非半字對齊的半字存儲將使指定地址的 2字節(jié)存儲內(nèi)容不可靠。 LDRSH R1, [R9] ;將 R9地址上的半字數(shù)據(jù)讀出到 R1,高16位用符號位擴展。 STRH R1, [R0, 2]! ;將 R1的數(shù)據(jù)保存到 R0+2地址中,只存儲低 2字節(jié)數(shù)據(jù),并且修改 R0=R0+2。 LDM為加載多個寄存器; STM為存儲多個寄存器 。 指令格式 ? LDM{cond}模式 Rn{!}, reglist{^} ? STM{cond} 模式 Rn{!}, reglist{^} 指令格式說明 ( 1) Rn: 表示基址寄存器 , 裝有傳送數(shù)據(jù)的初始地址 , Rn不允許為 R15( 即 PC) 。 ( 3) Reglist: 表示寄存器列表 , 可包含多個序號連續(xù)的或者分離的寄存器 , 用 “, ”分開 。 ( 4) 后綴 “^”說明 – 寄存器列表不包含 PC: 使用后綴 “^”進行數(shù)據(jù)傳送且時 , 加載/存儲的是用戶模式的寄存器 , 而不是當前模式的寄存器 。 該用法可用于異常處理返回 。 ( 5)當 Rn在寄存器列表中且使用后綴“!” – 對于 STM指令,若 Rn為寄存器列表中的最低數(shù)字的寄存器,則會將 Rn的初值保存; – 其它情況下 Rn的加載值和存儲值不可預知。 ( 7) 關(guān)于模式項 LDM/STM的主要用途是現(xiàn)場保護 、 數(shù)據(jù)復制和參數(shù)傳送等 。 ( 7) 關(guān)于模式項 LDM/STM的主要用途是現(xiàn)場保護 、 數(shù)據(jù)復制和參數(shù)傳送等 。 應(yīng)用舉例 ? LDMIA R0!, {R3 R9} ;加載 R0指向地址上的多字數(shù)據(jù),保存到R3~R9中, R0值更新。 ? STMFD SP!, {R0 R7, LR} ;現(xiàn)場保存,將 R0~ R LR入棧, SP值更新 。 三、 單寄存器交換指令( SWP) SWP指令 用于將一個存儲單元 (該單元地址放在寄存器Rn中 )的內(nèi)容讀取到一個寄存器 Rd中,同時將另一個寄存器 Rm的內(nèi)容寫入到該存儲單元中。 指令舉例 ? SWP R1, R1, [R0] ;將 R1的內(nèi)容與 R0指向的存儲單元的內(nèi)容進行交換。 ARM數(shù)據(jù)處理指令的特點 – 操作數(shù)來源: 所有的操作數(shù)要么來自寄存器,要么來自立即數(shù),不會來自存儲器。 – 有第二個操作數(shù)(除了乘法指令) Operand2 :切記其三種形式:立即數(shù)、寄存器、寄存器移位。 ARM數(shù)據(jù)處理指令分類 22條可分為 5類: – 算術(shù)運算指令: ADD ADC SUB SBC RSB RSC MUL MLA UMULL UMLAL SMULL SMLAL – 邏輯運算指令: AND ORR EOR BIC – 數(shù)據(jù)傳送指令: MOV MVN – 比較指令: CMP CMN – 測試指令: TST TEQ 上述指令只能對寄存器操作,不能針對存儲器。但是比較指令( cmp、 cmn、 tst和 teq)不需要后綴 S,它們總會直接影響 CPSR中的狀態(tài)標志。 – Z標志位: 如果結(jié)果為0,則Z標志位置1;否則清0。如果不需要移位,則C保持不變。在加減操作中,如果有溢出,則置1;不發(fā)生溢出,則清0。比如: – movs pc, 0xff /* cpsr = spsr。 pc = r1 + 0xffffff00 */ – ands pc, r1, r2 /* cpsr = spsr。 r2。 數(shù)據(jù)處理指令的二進制編碼 add r0, r1, 0xff add r0, r1, r1, LSL r2 add r0, r1, r1, LSL 31 數(shù)據(jù)處理指令的詳細列表 (未含 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 帶進位加 Rd = Rn + Op2 + C 0110 SBC 帶進位減 Rd = Rn Op2 + C 1 0111 RSC 反向帶進位減 Rd = Op2 Rn + C 1 1000 TST 測試 根據(jù) Rn AND Op2設(shè)置條件碼 1001 TEQ 測試相等 根據(jù) Rn EOR Op2設(shè)置條件 1010 CMP 比較 根據(jù) Rn Op2設(shè)置條件碼 1011 CMN 負數(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ù)運算指令 一、加減運算指令 ADD——加法運算指令 指令格式 ADD{cond}{S} Rd, Rn, operand2 ADD指令將 operand2的數(shù)據(jù)與 Rn的值相加,結(jié)果保存到 Rd寄存器。 指令舉例 ADDS R4, R0, R2 ;使用 ADC實現(xiàn) 64位加法 ADC R5, R1, R3 ; (R R4)= (R R0)+(RR2) SUB——減法運算指令 指令格式 SUB{cond}{S} Rd, Rn, operand2 SUB指令用寄存器 Rn減去 operand2,結(jié)果保存到 Rd中。 指令舉例 SUBS R4, R0, R2 ;使用 SBC實現(xiàn) 64位減法, SBC R5, R1, R3 ; (R5,R4)= (R1,R0)(R3
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1