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

正文內(nèi)容

[教育學(xué)]第三章arm指令系統(tǒng)-展示頁

2025-01-30 13:10本頁面
  

【正文】 + R2 二 、 寄存器移位尋址 寄存器移位尋址 當(dāng)?shù)诙僮鲾?shù)為寄存器型時,在執(zhí)行寄存器尋址操作時,也可以對第二操作數(shù)寄存器進行移位,此時 第二操作數(shù) 形式為: MOV Rd, Rn, Rm, {shift} 其中: Rm 稱為第二操作數(shù)寄存器 shift 用來指定移位類型和移位位數(shù),有兩種形式: ? 5位立即數(shù) (其值小于 32) ? 寄存器 (用 Rs表示 ) (其值小于 32) 在指令執(zhí)行時將寄存器移位后的內(nèi)容作為第二操作數(shù)參與運算 。 這種尋址方式是各類微處理器經(jīng)常采用的一種方式,也是一種執(zhí)行效率較高的尋址方式。 – 其它情況下,匯編編譯器選擇使 rot數(shù)值最小的編碼方式。 – 合法立即數(shù) : ? 0xFF; 0x104(其 8位圖為 0x41); 0xFF0; 0xFF00 – 非法立即數(shù): ? 0x101; 0x102; 0xFF1 深入理解: 一個合法的立即數(shù)可能有多種編碼方法,將使某些指令的執(zhí)行產(chǎn)生不同的結(jié)果。 uses 0x40 ror 26 ADD R1,R2,0xFF0000 。 記住一條準(zhǔn)則: “最后 8位移動偶數(shù)位 ”得到立即數(shù)。3f. ? 二進制數(shù) , #后加 0b, 如 0b1011 ? 十進制數(shù) , 后加 0d或缺省 ,如 0d678,789 如何構(gòu)造 32位立即數(shù) ? 在指令格式中,第二個操作數(shù)有 12位 : 因此有效立即數(shù) immediate可以表示成: immediate=immed_8 循環(huán)右移 ( 2 rot) 4 bit 移位值 (015)乘于 2,得到一個范圍在 030,步長為 2的移位值。 ? 十六進制數(shù) , #后加 0x或 amp。 ADD R0, R0, # 1 ; R0← R0+ 1 MOV R0 , # 0x3f 。 立即尋址概念: 操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)。 我們將 ARM指令系統(tǒng)的尋址方式分為 7種(有分為 9種的等)。 條件碼的書寫方法: 條件碼的位置在指令助記符的后面 ( 因此也稱為條件后綴 ) 。 只有在 cpsr中的條件標(biāo)志位滿足指定的條件時 ,指令才會被執(zhí)行 。 每種條件碼用 2個英文縮寫字符表示 。 ARM指令典型的編碼格式為: (數(shù)據(jù)處理指令類) Cond Opcode S Rn Rd Operand2 0 11 12 15 16 19 20 21 24 25 27 28 31 7 8 例: ADDS R2, R1, 1 SUBNES R2, R1, 0x20 LDR R0, [R1] 四、指令的條件碼 條件碼的位數(shù)和位置: 每條 ARM指令包含 4位條件碼域 cond,它占用指令編碼的最高四位 [31:28]。 – Rd: 包含第一個操作數(shù)的寄存器編碼。 – S:決定指令的操作是否影響 cpsr的值。 三、 ARM指令的格式 ARM指令基本的語法格式為: Opcode {cond}{s} Rn, Rd {, Operand2} – Opcode: 指令操作碼。 ? ARM指令可以分為五大類: 數(shù)據(jù)處理指令、存儲器訪問指令、分支指令、協(xié)處理器指令、雜項指令。 – 指令集可以通過協(xié)處理器擴展。 – 基本指令僅 36條,分成五類。 – 所有指令都可以條件執(zhí)行。 二、 ARM指令的特點 – 所有指令都是 32位的。 第 3章 ARM指令系統(tǒng) 第 3章 ARM指令系統(tǒng) 主要內(nèi)容 ARM指令結(jié)構(gòu) ARM尋址方式 ARM指令集 Thumb指令集 ARM偽指令 ARM匯編語言程序設(shè)計 ARM指令系統(tǒng)概述 主要內(nèi)容 一、指令系統(tǒng)概念 二、 ARM指令的特點 三、 ARM指令的格式 四、指令的條件碼 ARM指令系統(tǒng)概述 一、指令系統(tǒng)概念 指令: 是規(guī)定計算機進行某種操作的命令。 指令系統(tǒng): 計算機能夠執(zhí)行的各種指令的集合。 – 大多數(shù)指令都在單周期內(nèi)完成。 – ARM指令為 load/store類型。 – 有 7種尋址方式。 ? ARM指令是加載 /存儲 (Load/Store)型: 也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對系統(tǒng)存儲器的訪問則需要通過專門的加載 /存儲指令來完成。 ? ARM指令有 7種尋址方式: 立即尋址、寄存器尋址、寄存器間接尋址、基址尋址、堆棧尋址 、塊拷貝尋址、相對尋址。 – cond:指令的條件碼。 – Rn: 目標(biāo)寄存器編碼。 – Operand2:第 2操作數(shù)。 條件碼的表示: 條件編碼共 24 = 16 種 , 其中 ,15種用于指令的條件碼 。 ( 見 P47 表 26) 帶條件指令的執(zhí)行: ARM處理器根據(jù)指令的執(zhí)行條件是否滿足 , 決定當(dāng)前指令是否執(zhí)行 。 不符合條件的代碼依然占用一個時鐘周期 ( 相當(dāng)于一個 NOP指令 ) 。 例如: MOVEQ R0, R1 指令條件碼表 條件碼 助記符 含 義 標(biāo) 志 0000 EQ 相等 Z=1 0001 NE 不相等 Z=0 0010 CS/HS 無符號數(shù)大于或等于 C=1 0011 CC/LO 無符號數(shù)小于 C=0 0100 MI 負(fù)數(shù) N=1 0101 PI 非負(fù)數(shù) N=0 0110 VS 溢出 V=1 0111 VC 沒有溢出 V=0 1000 HI 無符號數(shù)大于 C=1且 Z=0 1001 LS 無符號數(shù)小于或等于 C=0或 Z=1 1010 GE 有符號數(shù)大于或等于 N=V 1011 LT 有符號數(shù)小于 N!=V 1100 GT 有符號數(shù)大于 Z=0且 N=V 1101 LE 有符號數(shù)小于或等于 Z=1或 N!=V 1110 AL 無條件執(zhí)行 任意 1111 保留 v5以下版本總執(zhí)行 ,v5及以上版本有用 ARM尋址方式 主要內(nèi)容 一、 立即尋址 二、寄存器尋址 三、寄存器間接尋址 四、基址尋址 五、堆棧尋址 六、塊拷貝尋址 七、相對尋址 ARM尋址方式 尋址方式:處理器根據(jù)指令中給出的(地址)信息,尋找操作數(shù)(物理地址)的方式。 立即尋址 立即尋址也叫立即數(shù)尋址。這個操作數(shù)被稱為立即數(shù),對應(yīng)的尋址方式也就叫做立即尋址。 R0← # 0x3f 書寫立即數(shù)時 , 要求以 “ # ” 為前綴 。,如 0x3f,amp。 因此,將 ARM中的立即數(shù) 稱為 8位位圖 。 Immed_8 rot …… 12 11 8 7 0 Shifter ROR immediate 0 31 ror 0 ror 8 ror 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 例: 下列命令中,匯編器把立即數(shù)轉(zhuǎn)換為移位操作: MOV R0,4096 。 uses 0xFF ror 16 帶有立即數(shù)的 MOV 指令的二進制編碼為: MOV R0, 0xF200 ; E3A00CF2. MOV R1, 0x110000 ; E3A01811. MOV R4, 0x12800 ; E3A04B4A. 0xF200 =0xF2循環(huán)右移( 2*C) 0x110000 =0x11循環(huán)右移( 2*8) 0x12800 =0x4A循環(huán)右移( 2*B) 只有能夠通過此構(gòu)造方法得到的才是合法的立即數(shù) 。 如 0x3F0 ARM匯編編譯器生成立即數(shù)的規(guī)則為: – 當(dāng)立即數(shù)數(shù)值在 0到 0xFF范圍時,令immed_8=immediate, rot=0。 immed_8=0x3F, rot=0xE,對 3F左移 4位 immed_8=0xFC, rot=0xF,對 FC左移 2位 寄存器尋址 寄存器尋址: ——利用寄存器中的數(shù)值作為操作數(shù) 。 兩種具體形式: 寄存器尋址、寄存器移位尋址。 例如指令: ADD R3, R2, R1, LSR 2 ; R3← R2+(R1右移 2位 ) ADD R3, R2, R1, LSR R0 ; R3← R2+(R1右移 R0位 ) 第二操作數(shù)移位方式 共有 6種移位方式: ? — LSL 邏輯左移 — LSR 邏輯右移 ? — ASL 算術(shù)左移 — ASR 算術(shù)右移 ? — ROR 循環(huán)右移 — RRX 帶擴展的循環(huán)右移 ( 1) LSL:邏輯左移 ,空出的最低有效位用 0填充。 31 0 SUB R3, R2, R1, LSL 2 ; R3←R2 (R1左移 2位 ) SUB R3, R2, R1, LSR R0 ; R3←R2 (R1右移 R0位 ) ( 3) ASL:算術(shù)左移 ,由于左移空出的有效位用 0填充,因此它與 LSL同義。算術(shù)移位的對象是帶符號數(shù),移位過程中必須保持操作數(shù)的符號不變。 30 0 ADD R3, R2, R1, ASL 2 ; R3←R2+(R1 左移 2位 ) SUB R3, R2, R1, ASR R3 ; R3←R2 (R1算術(shù)右移 R3位 ) ( 5) ROR:循環(huán)右移 (Rotate Right),移出的字的最低有效位依次填入空出的最高有效位。將寄存器的內(nèi)容 循環(huán)右移 1位 ,空位用原來 C標(biāo)志位填充。 如下所示: ADD R3, R2, R1, LSR 2 ; R3?R2+(R1右移 2位 ) ADD R3, R2, R1, LSR R4 ; R3?R2+(R1右移 R4位 ) 寄存器 R1的內(nèi)容分別邏輯右移 2位、 R4位 ,再與寄存器 R2的內(nèi)容相加,結(jié)果放入 R3中。例如以下指令: LDR R0, [R1] 。[R1]←R0 第一條指令將以 R1的值為地址的存儲單元中的內(nèi)容加載到寄存器 R0中。 R1—— 基址寄存器 R1的內(nèi)容 ——基地址 變址尋址 一、變址尋址 也叫基址加偏(變)址尋址 ——將 基址寄存器 的內(nèi)容與指令中給出的 地址偏移量相加 ,得到操作數(shù)所在的存儲器的有效地址。( 4K) 例如: LDR R0, [R1,# 4] ; R0←mem 32[R1+ 4] Cond Opcode Rn Rd Offset 0 11 12 15 16 19 20 27 28 31 二、偏移地址方式 有三種加偏址的方式 前變址模式 (不修改基址寄存器): ——先基址 +偏址,生成操作數(shù)地址,做指令指定的操作 。 0x05 R1 0x200 基址 寄存器 0x200 R0 0x05 源 寄存器 偏移量 12 0x20C Preindexed: STR r0,[r1,12] 自動變址模式 (修改基址寄存器 ): ——① 先基址 +偏移,生成操作數(shù)地址,做指令指定的操作。 ? 例如: LDR R0, [R1,# 4]! ; R0← mem32 [R1+ 4] ; R1← R1+ 4 ! ——表示更新基址寄存器 。 ②完成指令操作后,用 (基址 +偏移 )的值修改基址寄存器 。 0x5 r1 0x200 原基址 寄存器 0x200 r0 0x5 源 寄存器 偏移量 12 0x20c r1 0x20c 更新基 址寄存器 例 Postindexed
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1