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

正文內(nèi)容

下載ppt文檔--文庫吧資料

2024-10-25 20:53本頁面
  

【正文】 n的值與 operand2的值相加,再加上 CPSR寄存器中 C條件標(biāo)志位,結(jié)果保存到目標(biāo)寄存器( Rd)。 ADD指令示例: ADD R0, R1, R2; R0 = R1 + R2 ADD R0, R1, 5; R0 = R1 + 5 ADD R0, R1, R2, LSL 2; R0 = R1 +R2*4 69 SUB 減法指令 指令格式: SUB {cond} {S} Rd, Rn, operand2 功能:本指令用 Rn中的值減去 operand2,結(jié)果保存到目標(biāo)寄存器( Rd)。 示例: ? MVN R0, 0xFF 67 2 算術(shù)邏輯運算指令 ? 這類指令主要用于加 /減等算術(shù)運算和與 /或等邏輯運算,完成數(shù)據(jù)的運算處理。 ? 數(shù)據(jù)傳送指令包括: ① MOV——數(shù)據(jù)傳送指令 ② MVN ——數(shù)據(jù)非傳送指令 65 MOV指令 指令格式: MOV {cond} {S} Rd, operand2 功能 : MOV( MOVe)指令用于將 8位位圖立即數(shù)或寄存器數(shù)據(jù)傳送到目標(biāo)寄存器( Rd),也可用于移位運算等操作。比較指令不保存運算結(jié)果,只更新 CPSR中相應(yīng)的條件標(biāo)志位。 指令格式: SWP{cond}{B} Rd, Rm, [Rn] 63 3. ARM數(shù)據(jù)處理指令 ? 數(shù)據(jù)處理指令對存放在寄存器中的數(shù)據(jù)進(jìn)行操作,分為 數(shù)據(jù)傳送指令、算術(shù)邏輯運算指令和比較指令 。同時,該后綴還表示傳入或傳出的是用戶模式下的寄存器,而不是當(dāng)前模式下的寄存器?;芳拇嫫鞑辉试S為 R15, 寄存器列表可以為 R0~R15的任意組合。 LDM( LoaD Mutiple registers from memory)指令是把多個內(nèi)存單元的內(nèi)容加載到多個寄存器中; STM( STore Mutiple registers to memory)指令是把多個寄存器的內(nèi)容存儲到多個內(nèi)存單元中,這多個寄存器是 R0~ R15的任意組合(即, R0~ R15的任何子集)。匯編程序中,通常直接使用語句標(biāo)號指定訪問單元。在這種方法中,基址寄存器默認(rèn)為程序計數(shù)器PC,偏移量是語句標(biāo)號所在的地址和 PC(當(dāng)前正在執(zhí)行的指令)之間的差值。例: LDR Rd, [Rn], 0x04 STR Rd, [Rn], 0x08 在后索引中 , 基址在指令的執(zhí)行前后是不相同的。地址索引分為 ? 前索引 (Preindexed) ? 后索引 (Postindexed) ? 程序相對偏移 ?地址索引偏移 54 2020/11/23 ( 1)前索引 前索引也稱為前變址,在數(shù)據(jù)傳送之前,將先計算基地址與偏移量,其結(jié)果作為傳送數(shù)據(jù)的存儲地址。這個地址偏移量可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。如: LDR R0, [R1, 0x12] LDR R0, [R1, 0x12] ( 2)寄存器 寄存器中的數(shù)值可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。 存儲器訪問指令分為: 1 單寄存器加載與存儲指令 2 多寄存器加載與存儲指令 3 交換指令 A R M 處 理 器寄 存 器R 0 ~ R 1 5存 儲 器存 儲( s t o r e )加 載( l o a d )50 LDR和 STR ——(單寄存器)加載存儲指令 ? LDR( LoaD Register from memory)指令從存儲器加載一個數(shù)據(jù)到寄存器中; STR( STore Register to memory)指令則相反,把寄存器中的一個數(shù)據(jù)存儲到存儲器中。 它有如下的形式: ? immed_8r——常數(shù)表達(dá)式; ? Rm——寄存器方式; ? Rm,shift——寄存器移位方式; MOV R0, 1 AND R0, R1, 0x0F MOV PC, R0 LDR R0, [R1], R2 ? LSL 邏輯左移 ? LSR 邏輯右移 ? ASR 算術(shù)右移 ? ROR 循環(huán)右移 ? RRX 帶擴(kuò)展的循環(huán)右移 0( a ) L S L 移 位 操 作0( b ) L S R 移 位 操 作( c ) A S R 移 位 操 作( d ) R O R 移 位 操 作( e ) R R X 移 位 操 作C ADD R0, R1, R1, LSL 3 SUB R0, R1, R2, LSR 2 MOV R0, R1, RRX 49 2. ARM存儲器訪問指令 ARM處理器是典型的 RISC處理器,對存儲器的訪問只能使用加載和存儲指令實現(xiàn)。 例如: SUBNES R0, R1, 0x10 其中操作碼為 SUB,條件域 cond為 NE, S表示該指令的執(zhí)行影響 CPSR寄存器的值, 目的寄存器 Rd為 R0, 第一個操作數(shù)寄存器 Rn為 R1, 第二個操作數(shù) OP2為立即數(shù) 0x10 。 ? Rn 第 1個操作數(shù)的寄存器,用于存放參與運算的操作數(shù) 1。 ? S 用于指定指令的執(zhí)行是否影響CPSR寄存器的值,書寫時影響 CPSR。 各項的說明如下: opcode:指令助記符; cond: 執(zhí)行條件; S:是否影響 CPSR寄存器的值; Rd:目標(biāo)寄存器; Rn:第 1個操作數(shù)的寄存器; operand2:第 2個操作數(shù); 1. ARM匯編語言的指令格式 48 opcode {cond} {S} Rd, Rn {,operand2} ?opcode 指令助記符 , 用于指定指令的操作功能 。 條件后綴和 S后綴的區(qū)別? 45 第 3章 目錄 ?1. ARM7TDMI編程模型 ?2. ARM7TDMI的尋址方式 ?3. ARM7TDMI指令的條件執(zhí)行 ?4. ARM指令集 ?5. Thumb指令集 46 ARM指令集 A R M核 心內(nèi) 存A R M 協(xié) 處 理 器加 載 指 令( L D R 等 )存 儲 指 令( S T R 等 )通 用 寄 存 器數(shù) 據(jù) 處 理 指 令狀 態(tài) 寄 存 器狀 態(tài) 寄 存 器訪 問 指 令協(xié) 處 理 器 指 令P C跳 轉(zhuǎn) 指 令乘 法 器乘 法 指 令同一個體系的ARM內(nèi)核的指令集是相同的 ,但是每條指令運行的時間可能不同 。 選擇執(zhí)行 , 若 R0≤1, 則 R1=R1+1 條件碼示例: 44 ( 1)如果既有條件后綴又有 S后綴,則書寫時 S排在后面,如: ADDEQS R1, R0, R2 ( 2)條件后綴是要測試條件標(biāo)志位,而 S后綴是要刷新條件標(biāo)志位。 R0與 R1比較 ADDHI R0, R0, 1 。 實現(xiàn):當(dāng) CPSR中 Z=1時,執(zhí)行 R0=R1+R2,并且根據(jù)結(jié)果更新 CPSR中條件標(biāo)志碼;否則若 Z=0跳過本指令不執(zhí)行 條件后綴只是影響指令是否執(zhí)行,不影響指令的內(nèi)容,如上述 ADDEQ指令,可選后綴 EQ并不影響本指令的內(nèi)容,它執(zhí)行時仍然是一條加法指令。 實現(xiàn):將 R1的值和 R2的值相加并存入 R4,運算結(jié)果不影響 CPSR狀態(tài)值 指令 ② 的執(zhí)行也不受條件標(biāo)志的影響,但是由于附帶了后綴 S,這條指令執(zhí)行的結(jié)果將影響CPSR中條件標(biāo)志位的值。使用指令條件碼可實現(xiàn)高效的 邏輯操作,提高代碼執(zhí)行效率。 注意:以上 ARM尋址模式是適用于所有 ARM體系的,包括 ARM7的馮 .諾依曼結(jié)構(gòu)和 ARM9及以上的哈佛結(jié)構(gòu)。 ② ARM尋址的字加載 存儲尋址是 4字節(jié)對齊,半字加載是 2字節(jié)對齊,不對齊不能訪問。 指令如 LDMED、 STMED等 。 指令如 LDMEA、 STMEA等; ?滿遞減 :堆棧向下增長 , 堆棧指針指向內(nèi)含有效數(shù)據(jù)項的最低地址 。 ? 滿堆棧和空堆棧 0x12345678 0x12345678 棧頂 SP? 0x12345678 棧頂 SP? 壓棧 壓棧 多寄存器傳送指令映射表 ? STM =將寄存器內(nèi)容存入內(nèi)存單元 (堆棧操作:入棧) ? LDM=將內(nèi)存單元內(nèi)容存入寄存器 (堆棧操作:出棧) 向 上 生 長 向 下 生 長指 針 滿 指 針 滿 指 針 空指 針 空L D M I BL D M E DS T M I BS T M F AS T M I AS T M E AL D M I AL D M F DL D M D BL D M E AS T M D BS T M F DS T M D AS T M E DL D M D AL D M F A地 址 增 加 在 傳 送 之 后地 址 增 加 在 傳 送 之 前地 址 減 小 在 傳 送 之 前地 址 減 小 在 傳 送 之 后地 址 變 化 的 方 向地 址 變 化 的 關(guān) 系傳 送 與多寄存器傳送指令說明 ? 數(shù)據(jù)塊傳送: ? I =向地址增大方向處理數(shù)據(jù)傳送 (Increment) ? D =向地址減小方向處理數(shù)據(jù)傳送 (Decrement) ? A =先傳送數(shù)據(jù)后改變地址 (after) ? B =先改變地址后傳送數(shù)據(jù) (before) ? 堆棧操作: ? F =滿棧頂指針 (full) ? E =空棧頂指針 (empty) ? A =堆棧向高地址方向增長 (ascending stack) ? D =堆棧向低地址方向增長 (decending stack) 38 所以可以組合出四種類型的堆棧方式: ?滿遞增 :堆棧向上增長 , 堆棧指針指向內(nèi)含有效數(shù)據(jù)項的最高地址 。 注意: 不要以為空堆棧就是沒有內(nèi)容的堆棧,滿堆棧就是沒有空間的堆棧。 當(dāng)堆棧指針 指向最后壓入堆棧的數(shù)據(jù)時 ,稱為滿堆棧( Full Stack),而當(dāng)堆棧指針 指向下一個將要放入數(shù)據(jù)的空位置時 ,稱為 空堆棧( Empty Stack)。跳轉(zhuǎn)到子程序 NEXT處執(zhí)行 ……. NEXT ……. MOV PC, LR 。 0x40000000 R1 R2 0x?? 0x01 0x40000000 0x?? R3 R4 0x?? R5 0x?? 0x02 0x03 0x04 0x40000004 0x40000008 0x4000000C 存儲器 LDMIA R1!,{R2R7,R12} 0x?? R6 R7 0x?? 0x?? R12 0x05 0x40000010 0x06 0x12 0x40000014 0x40000018 010203040506121C 多寄存器指令的執(zhí)行順序舉例 1 ? 通過 ADS集成開發(fā)環(huán)境的 AXD調(diào)試器窗口觀察 多寄存器指令的執(zhí)行順序舉例 2 ? 通過 ADS集成開發(fā)環(huán)境的 AXD調(diào)試器窗口觀察 32 ARM的尋址模式 6 跳轉(zhuǎn)尋址 相對尋址 以程序計數(shù)器 PC當(dāng)前值為基地址,指令中的標(biāo)號作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。 這種尋址方式可以 用一條指令完成傳送最多 16 個通用寄存器的值。 將 R1所指向的存儲器區(qū)域中的內(nèi)容依次加載到 R2~ R R12(每傳送一個寄存器值后, R1的值自動加 4并保存 ) STMIA R0!, {R2R7, R12} 。 其它指令 arithfunc CMP R0, num MOVHS PC, LR MOV R0, 0 MOV R1, 3 MOV R2, 2 BL arithfunc cmd 1 cmd 2 cmd N CMP R0, num MOVHS PC, LR …… LAB LAB+4 LAB+8 arithfunc △ L = arithfunc – (LAB+8) 執(zhí)行 取指 取指 譯碼 取指 譯碼 執(zhí)行 取指 譯碼 執(zhí)行 取指 譯碼 執(zhí)行 取指 譯碼 執(zhí)行 取指 cmd X 取指 譯碼 取指 譯碼 注意: 此時重建 流水線 28 (塊拷貝尋址) 多寄存器尋址就是在 ARM處理器與存儲器間用一條指令完成多個寄存器值的傳送,即允許用一條指令實現(xiàn)傳送
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1