arm 指令1(转)
| 指令格式:? 指令{條件}{S} {目的Register},{OP1},{OP2} | "{ }"中的內(nèi)容可選。即,可以不帶條件只有目的寄存器,或 只有目的寄存器和操作數(shù)1,也可以同時包含所有選項(xiàng)。“S” 決定指令的操作是否影響CPSR中條件標(biāo)志位的值,當(dāng)沒有S時指令不更新CPSR中條件標(biāo)志位的值 | ? | ||||||||||||||||||||||||||||||||
| ? | 助記符 | 英文全稱 | 示例、功能 | ? | ||||||||||||||||||||||||||||||
| 跳 轉(zhuǎn) 指 令 | B | Branch 跳轉(zhuǎn)指令 | B? Label??? ;程序無條件跳轉(zhuǎn)到標(biāo)號Label處執(zhí)行 | ? | ||||||||||||||||||||||||||||||
| BL | Branch with Link 帶返回的跳轉(zhuǎn)指令 | BL Label ;當(dāng)程序無條件跳轉(zhuǎn)到標(biāo)號Label處執(zhí)行時,同時將當(dāng)前的PC值保存到R14中 | ? | |||||||||||||||||||||||||||||||
| BLX | Branch with Link and exchange帶返回和狀態(tài)切換的跳轉(zhuǎn)指令 | BLX? Label ;從ARM指令集跳轉(zhuǎn)到指令中所指定的目標(biāo)地址,并將處理器的工作狀態(tài)有ARM狀態(tài)切換到Thumb狀態(tài),該指令同時將PC的當(dāng)前內(nèi)容保存到寄存器R14中 | ? | |||||||||||||||||||||||||||||||
| BX | Branch and exchange 帶狀態(tài)切換的跳轉(zhuǎn)指令 | BX? Label ;跳轉(zhuǎn)到指令中所指定的目標(biāo)地址,目標(biāo)地址處的指令既可以是ARM指令,也可以是Thumb指令 | ? | |||||||||||||||||||||||||||||||
| ? ? ? ? ? ? 數(shù) 據(jù) 處 理 ? ? ? ? | MOV | Move 數(shù)據(jù)傳送 | MOV R1,R0,LSL#3 ;將寄存器R0的值左移3位后傳送到R1 | ? | ||||||||||||||||||||||||||||||
| MVN | Move NOT 數(shù)據(jù)非傳送 | MVN R0,#0 ;將立即數(shù)0取反傳送到寄存器R0中,完成后R0=-1 | ? | |||||||||||||||||||||||||||||||
| CMP | Compare 比較指令 | CMP R1,R0? ;將寄存器R1的值與寄存器R0的值相減,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位 | ? | |||||||||||||||||||||||||||||||
| CMN | Compare negative 負(fù)數(shù)比較指令 | CMN R1,R0? ;將寄存器R1的值與寄存器R0的值相加,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位 | ? | |||||||||||||||||||||||||||||||
| TST | Test 位測試指令 | TST R1,#0xffe ;將寄存器R1的值與立即數(shù)0xffe按位與,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位 | ? | |||||||||||||||||||||||||||||||
| TEQ | Test equivalence 相等測試指令 | TEQ R1,R2 ;將寄存器R1的值與寄存器R2的值按位異或,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位 | ? | |||||||||||||||||||||||||||||||
| ADD | Add 加法運(yùn)算指令 | ADD R0,R2,R3,LSL#1?? ; R0 = R2 + (R3 << 1) | ? | |||||||||||||||||||||||||||||||
| ADC | Add with carry 帶進(jìn)位加法 | ADCS ?? R2,R6,R10 ; R2 = R6+R10+!C,且更新CPSR的進(jìn)位標(biāo)志位 | ? | |||||||||||||||||||||||||||||||
| SUB | Subtract 減法運(yùn)算指令 | SUB? R0,R1,#256 ? ; R0 = R1 – 256 | ? | |||||||||||||||||||||||||||||||
| SBC | Subtract with carry 帶進(jìn)位減法指令 | SUBS R0,R1,R2 ; R0 = R1 - R2 - !C,并根據(jù)結(jié)果設(shè)置CPSR的進(jìn)位標(biāo)志位 | ? | |||||||||||||||||||||||||||||||
| RSB | Reverse subtract 逆向減法指令 | RSB R0,R1,R2 ; R0 = R2 – R1 | ? | |||||||||||||||||||||||||||||||
| RSC | Reverse subtract with carry 帶進(jìn)位逆向減法指令 | RSC R0,R1,R2? ; R0 = R2 – R1 - !C | ? | |||||||||||||||||||||||||||||||
| AND | And 邏輯與操作指令 | AND R0,R0,#3 ; 該指令保持R0的0、1位,其余位清零。 | ? | |||||||||||||||||||||||||||||||
| ORR | OR 邏輯或操作指令 | ORR R0,R0,#3 ; 該指令設(shè)置R0的0、1位,其余位保持不變。 | ? | |||||||||||||||||||||||||||||||
| EOR | Exclusive OR 邏輯異或操作指令 | EOR R0,R0,#3 ; 該指令反轉(zhuǎn)R0的0、1位,其余位保持不變。 | ? | |||||||||||||||||||||||||||||||
| BIC | Bit clear 位清除指令 | BIC R0,R0,#0b1011 ; 該指令清除 R0 中的位 0、1、和 3,其余的位保持不變。 | ? | |||||||||||||||||||||||||||||||
| CLZ | Count left zero | 計(jì)算操作數(shù)最高端0的個數(shù) | ? | |||||||||||||||||||||||||||||||
| ? 乘 加 指 令 | MUL | Multiply 32位乘法指令 | MUL R0,R1,R2? ;R0 = R1 × R2 | ? | ||||||||||||||||||||||||||||||
| MLA | Multiply and accumulate 32位乘加指令 | MLAS R0,R1,R2,R3 ;R0 = R1 × R2 + R3,同時設(shè)置CPSR中的相關(guān)條件標(biāo)志位 | ? | |||||||||||||||||||||||||||||||
| SMULL | Signed multiply long 64位有符號數(shù)乘法指令 | SMULL?? R0,R1,R2,R3? ;R0 = (R2 × R3)的低32位 R1 = (R2 × R3)的高32位 | ? | |||||||||||||||||||||||||||||||
| SMLAL | Signed mul l and accumulate l 64位有符號數(shù)乘加指令 | SMLAL?? R0,R1,R2,R3? ;R0 =(R2 × R3)的低32位+R0; R1 =(R2 × R3)的高32位+ R1 | ? | |||||||||||||||||||||||||||||||
| UMULL | Unsigned multiply long 64位無符號數(shù)乘法指令 | UMULL?? R0,R1,R2,R3? ;R0 = (R2 × R3)的低32位;R1 =(R2 × R3)的高32位 | ? | |||||||||||||||||||||||||||||||
| UMLAL | Unsigned mul&accumulate lon 64位無符號數(shù)乘法指令 | UMLAL?? R0,R1,R2,R3? ;R0 =(R2 × R3)的低位+R0;R1 =(R2 × R3)的高32位+R1 | ? | |||||||||||||||||||||||||||||||
| PSR 訪問 | MRS | Move PSR to register 程序狀態(tài)寄存器到通用寄存器的數(shù)據(jù)傳送指令 | MRS R0,CPSR ;傳送CPSR的內(nèi)容到R0 | ? | ||||||||||||||||||||||||||||||
| MSR | Move register to PSR通用寄存器到程序狀態(tài)寄存器的數(shù)據(jù)傳送指令 | MSR CPSR_c ,R0 ;傳送R0的內(nèi)容到SPSR,但僅僅修改CPSR中的控制位域 | ? | |||||||||||||||||||||||||||||||
| 加載/ 存儲 指令 | LDR | Load word 字?jǐn)?shù)據(jù)加載指令 | LDR R0,[R1,R2]! ;將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀入R0,并將新地址R1+R2寫入R1。 | ? | ||||||||||||||||||||||||||||||
| LDRB | Load byte 字節(jié)數(shù)據(jù)加載指令 | LDRB R0,[R1,#8] ;將存儲器地址為R1+8的字節(jié)數(shù)據(jù)讀入R0,并將R0的高24位清零 | ? | |||||||||||||||||||||||||||||||
| LDRH | Load half word 半字?jǐn)?shù)據(jù)加載指令 | LDRH? R0,[R1] ;將存儲器地址為R1的半字?jǐn)?shù)據(jù)讀入寄存器R0,并將R0的高16位清零 | ? | |||||||||||||||||||||||||||||||
| LDM | Load multiple 批量數(shù)據(jù)加載指令 | LDMFD? R13!,{R0,R4-R12,PC} ;將堆棧內(nèi)容恢復(fù)到寄存器(R0,R4到R12,LR) | ? | |||||||||||||||||||||||||||||||
| STR | Store 字?jǐn)?shù)據(jù)存儲指令 | STR R0,[R1],#8 ;將R0中的字?jǐn)?shù)據(jù)寫入R1為地址的存儲器中,并將新地址R1+8寫入R1 | ? | |||||||||||||||||||||||||||||||
| STRB | Store byte 字節(jié)數(shù)據(jù)加載存儲指令 | STRB R0,[R1,#8]? ;將寄存器R0中的字節(jié)數(shù)據(jù)寫入以R1+8為地址的存儲器中 | ? | |||||||||||||||||||||||||||||||
| STRH | Store half word 半字?jǐn)?shù)據(jù)存儲指令 | STRH R0,[R1,#8] ;將寄存器R0中的半字?jǐn)?shù)據(jù)寫入以R1+8為地址的存儲器中 | ? | |||||||||||||||||||||||||||||||
| STM | Store multiple 批量數(shù)據(jù)存儲指令 | STMFD R13!,{R0,R4-R12,LR}??? ;將寄存器列表中的寄存器(R0,R4到R12,LR)存入堆棧 | ? | |||||||||||||||||||||||||||||||
| 數(shù)據(jù) 交換 | SWP | Swap word 字?jǐn)?shù)據(jù)交換指令 | SWP R0,R1,[R2] ;R2所指的字?jǐn)?shù)據(jù)傳送到R0,同時R1的數(shù)據(jù)傳送到R2所指的單元 | ? | ||||||||||||||||||||||||||||||
| SWPB | Swap byte 字節(jié)數(shù)據(jù)交換指令 | SWPB R0,R1,[R2] ;R2所指的字節(jié)數(shù)據(jù)傳送到R0,R0高24位清零,同時R1低8位送R2所指單元。 | ? | |||||||||||||||||||||||||||||||
| 移 位 指 令 | LSL | Logic shift left 邏輯左移操作 | MOV? R0, R1, LSL#2(ASL#2) ;將R1中的內(nèi)容左移兩位后傳送到R0中,低位用0填充 | ? | ||||||||||||||||||||||||||||||
| ASL | Arithmetic shift left 算術(shù)左移操作 | ? | ||||||||||||||||||||||||||||||||
| LSR | Logic shift right 邏輯右移操作 | MOV R0, R1, LSR#2 ;將R1中的內(nèi)容右移兩位后傳送到R0中,左端用零來填充 | ? | |||||||||||||||||||||||||||||||
| ASR | Arithmetic shift right 算術(shù)右移操作 | MOV R0, R1, ASR#2 ;將R1中的內(nèi)容右移兩位后傳送到R0中,左端用第31位的值來填充 | ? | |||||||||||||||||||||||||||||||
| ROR | Rotate right 循環(huán)右移操作 | MOV R0, R1, ROR#2?? ;將R1中的內(nèi)容循環(huán)右移兩位后傳送到R0中 | ? | |||||||||||||||||||||||||||||||
| RRX | Rotate right extended 帶拓展的循環(huán)右移操作 | 左端用進(jìn)位標(biāo)志位C來填充 | ? | |||||||||||||||||||||||||||||||
| 協(xié)處 理器 | CDP | Data operations | 協(xié)處理器數(shù)操作指令 | ? | ||||||||||||||||||||||||||||||
| LDC | Load | 協(xié)處理器數(shù)據(jù)加載指令 | ? | |||||||||||||||||||||||||||||||
| STC | Store | 協(xié)處理器數(shù)據(jù)存儲指令 | ? | |||||||||||||||||||||||||||||||
| MCR | Move to coproc fr ARM reg | 處理器寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令 | ? | |||||||||||||||||||||||||||||||
| MRC | M to ARM reg fr coprocessor | 協(xié)處理器寄存器到處理器寄存器的數(shù)據(jù)傳送指令 | ? | |||||||||||||||||||||||||||||||
| ? | ? | |||||||||||||||||||||||||||||||||
| PSR field | F (Flags field mask byte) | S (Stats field mask byte) | X (Extension field mask byte) | C (control field mask byte) | ? | |||||||||||||||||||||||||||||
| CPSR | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ? | |
| 意義 | N | Z | C | V | Q | DNZ (RAZ) 系統(tǒng)擴(kuò)展用 | I | F | T | M4 | M3 | M2 | M1 | M0 | ? | |||||||||||||||||||
| ? | ? | |||||||||||||||||||||||||||||||||
| CPSR 各位 詳細(xì) 意義 | N | ? | 當(dāng)前指令運(yùn)算結(jié)果為負(fù)時,N = 1; 結(jié)果為非負(fù)時,N = 0 | ? | ||||||||||||||||||||||||||||||
| Z | ? | 運(yùn)算結(jié)果為0,Z=1;否則Z=0 | ? | |||||||||||||||||||||||||||||||
| C | ? | 上溢出、進(jìn)位C=1;下溢出、借位C=0 | ? | |||||||||||||||||||||||||||||||
| V | ? | 加減法V=1表示符號位溢出 | ? | |||||||||||||||||||||||||||||||
| I | ? | I=1時,禁止IRQ中斷 | ? | |||||||||||||||||||||||||||||||
| F | ? | F=1時,禁止FIQ中斷 | ? | |||||||||||||||||||||||||||||||
| T | ? | T=0,ARM指令;T=1,Thumb指令 | ? | |||||||||||||||||||||||||||||||
| M[4:0] | 0b10000 | User | ? | |||||||||||||||||||||||||||||||
| 0b10001 | FIQ | ? | ||||||||||||||||||||||||||||||||
| 0b10010 | IRQ | ? | ||||||||||||||||||||||||||||||||
| 0b10011 | Supervisor | ? | ||||||||||||||||||||||||||||||||
| 0b10111 | Abort | ? | ||||||||||||||||||||||||||||||||
| 0b11011 | Undefined | ? | ||||||||||||||||||||||||||||||||
| 0b11111 | System | ? | ||||||||||||||||||||||||||||||||
| ? | ? | |||||||||||||||||||||||||||||||||
| ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
| 指令 格式 | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ? | ? | |||||||
| Cond | ? | ? | ? | Opcode | S | Rn | Rd | Shift_operand | ? | ||||||||||||||||||||||||||||||||
| opcode | ? | 指令操作符編碼 | ? | ||||||||||||||||||||||||||||||||||||||
| S | ? | 決定指令的操作是否影響CPSR的值 | ? | ||||||||||||||||||||||||||||||||||||||
| Rd | ? | 目標(biāo)寄存器編碼 | ? | ||||||||||||||||||||||||||||||||||||||
| Rn | ? | 包含第一個操作數(shù)的寄存器編碼 | ? | ||||||||||||||||||||||||||||||||||||||
| Shift_oprand | ? | 表示第二個操作數(shù) | ? | ||||||||||||||||||||||||||||||||||||||
| Cond | ? | 指令執(zhí)行的條件編碼,詳細(xì)如下所示 | ? | ||||||||||||||||||||||||||||||||||||||
| ? | ? | ||||||||||||||||||||||||||||||||||||||||
| ? ? ? ? ? 條 件 域 | EQ | Z=1 | Equal | ? | |||||||||||||||||||||||||||||||||||||
| NE | Z=0 | Not equal, or unordered | ? | ||||||||||||||||||||||||||||||||||||||
| ? | CS/HS | C=1 | Carry set / Unsigned higher or same | Great than or equal, or unordered | ? | ||||||||||||||||||||||||||||||||||||
| CC/LO | C=0 | Carry clear / Unsigned lower | Less than | ? | |||||||||||||||||||||||||||||||||||||
| MI | N=1 | Negative | Less than | ? | |||||||||||||||||||||||||||||||||||||
| PL | N=0 | Positive or zero | Greater than or equal , or unordered | ? | |||||||||||||||||||||||||||||||||||||
| VS | V=1 | Overflow | Unordered | ? | |||||||||||||||||||||||||||||||||||||
| VC | V=0 | No overflow | Not unordered | ? | |||||||||||||||||||||||||||||||||||||
| HI | C=1且Z=0 | Unsigned higher | Greater than, or unordered | ? | |||||||||||||||||||||||||||||||||||||
| LS | C=0或Z=1 | Unsigned lower or same | Less than or equal | ? | |||||||||||||||||||||||||||||||||||||
| GE | N=1且V=1 或N=0且V=0 | Signed greater than or equal | Greater than or equal | ? | |||||||||||||||||||||||||||||||||||||
| LT | N=1且V=0 或N=0且V=1 | Signed less than | Less than , or unordered | ? | |||||||||||||||||||||||||||||||||||||
| GT | Z=0或N=V | Signed greater than | Great than | ? | |||||||||||||||||||||||||||||||||||||
| LE | Z=1或N!=V | Signed less than or equal | Less than or equal , or unordered | ? | |||||||||||||||||||||||||||||||||||||
| AL | ? | Always (normally omitted) | ? | ||||||||||||||||||||||||||||||||||||||
| ? | ? | ||||||||||||||||||||||||||||||||||||||||
| 并行 指令 前綴 | S | ? | Signed arithmetic modulo 28 or 216 ,sets CPSR GE bit | ? | |||||||||||||||||||||||||||||||||||||
| Q | ? | Signed saturating arithmetic | ? | ||||||||||||||||||||||||||||||||||||||
| SH | ? | Signed arithmetic, halving results | ? | ||||||||||||||||||||||||||||||||||||||
| U | ? | Unsigned arithmetic modulo 28 or 216 ,sets CPSR GE bit | ? | ||||||||||||||||||||||||||||||||||||||
| UQ | ? | Unsigned saturating arithmetic | ? | ||||||||||||||||||||||||||||||||||||||
| UH | ? | Unsigned arithmetic ,halving results | ? | ||||||||||||||||||||||||||||||||||||||
| 批量 傳輸 地址 模式 | Block load / store | Stack pop / push | ? | ||||||||||||||||||||||||||||||||||||||
| IA | Increment after | FD | Full descending | ? | |||||||||||||||||||||||||||||||||||||
| IB | Increment before | ED | Empty descending | ? | |||||||||||||||||||||||||||||||||||||
| DA | Decrement after | FA | Full ascending | ? | |||||||||||||||||||||||||||||||||||||
| DB | Decrement before | EA | Empty ascending | ? | |||||||||||||||||||||||||||||||||||||
| ? | ? | ||||||||||||||||||||||||||||||||||||||||
| ? ARM 指令 尋址 方式 | 立即尋址 | ADD R0,R0,#0x3f | R0←R0+0x3f | ? | |||||||||||||||||||||||||||||||||||||
| 寄存器尋址 | ADD R0,R1,R2 | R0←R1+R2 | ? | ||||||||||||||||||||||||||||||||||||||
| 間接尋址 | ADD R0,R1,[R2] | R0←R1+[R2] | ? | ||||||||||||||||||||||||||||||||||||||
| 變址尋址 | LDR R0,[R1,#4] | R0←[R1+4] | ? | ||||||||||||||||||||||||||||||||||||||
| LDR R0,[R1,#4]! | R0←[R1+4]、R1←R1+4 | ? | |||||||||||||||||||||||||||||||||||||||
| LDR R0,[R1] ,#4 | R0←[R1]、R1←R1+4 | ? | |||||||||||||||||||||||||||||||||||||||
| LDR R0,[R1,R2] | R0←[R1+R2] | ? | |||||||||||||||||||||||||||||||||||||||
| 多寄存器尋址 | LDMIA R0,{R1,R2,R3,R4} | R1←[R0];R2←[R0+4];R3←[R0+8];R4←[R0+12] | ? | ||||||||||||||||||||||||||||||||||||||
| ? | ? | ||||||||||||||||||||||||||||||||||||||||
| 偽指令及偽操作 | ? | ||||||||||||||||||||||||||||||||||||||||
| ? 符號 定義 ? | ? | GBLA / LCLA | 定義一個全局 / 局部的數(shù)字變量,并初始化為0 | ? | |||||||||||||||||||||||||||||||||||||
| GBLL / LCLL | 定義一個全局 / 局部的邏輯變量,并初始化為F(假) | ? | |||||||||||||||||||||||||||||||||||||||
| GBLS / LCLS | 定義一個全局 / 局部的字符串變量,并初始化為空 | ? | |||||||||||||||||||||||||||||||||||||||
| SETA / SETL / SETS | 給一個數(shù)學(xué) / 邏輯 / 字符串變量賦值 | ? | |||||||||||||||||||||||||||||||||||||||
| RLIST | 對一個通用寄存器列表定義名稱,訪問次序?yàn)楦鶕?jù)寄存器的編號由低到高,與排列次序無關(guān) | ? | |||||||||||||||||||||||||||||||||||||||
| 數(shù)據(jù) 定義 | ? | DCB(=)/ DCW(DCWU) | 分配一片連續(xù)的字節(jié) / 半字存儲單元并用指定的數(shù)據(jù)初始化 | 后綴U表示不要求對齊 | ? | ||||||||||||||||||||||||||||||||||||
| DCFS(DCFSU)/DCFD(DCFDU) | 分配一片連續(xù)的(單 / 雙精度的浮點(diǎn)數(shù))字存儲單元并用指定的數(shù)據(jù)初始化 | ? | |||||||||||||||||||||||||||||||||||||||
| DCQ(DCQU)/ DCD(DCDU) | 用于分配一片以雙字 / 字為單位的連續(xù)的存儲單元并用指定的數(shù)據(jù)初始化 | ? | |||||||||||||||||||||||||||||||||||||||
| DCDO | 分配字內(nèi)存但愿,初始化為標(biāo)號基于靜態(tài)基址寄存器R9的偏移量 | ? | |||||||||||||||||||||||||||||||||||||||
| DCI | 和DCD類似,不同處在于DCI內(nèi)存中的數(shù)據(jù)被標(biāo)識為指令 | ? | |||||||||||||||||||||||||||||||||||||||
| SPACE(%) | DataSpace?? SPACE?? 100 ;分配連續(xù)100字節(jié)的存儲單元并初始化為0 | ? | |||||||||||||||||||||||||||||||||||||||
| MAP(^) | MAP 0x100,R0?? ;定義結(jié)構(gòu)化內(nèi)存表首地址的值為0x100+R0 | ? | |||||||||||||||||||||||||||||||||||||||
| FIELD(#) | A FIELD 16? ;定義A的長度為16字節(jié) | ? | |||||||||||||||||||||||||||||||||||||||
| ? ? ? 控制 偽 指令 | IF、ELSE、ENDIF | IF?? 邏輯表達(dá)式 ???? 指令序列1 ELSE ???? 指令序列2 ENDIF | IF、ELSE、ENDIF偽指令能根據(jù)條件的成立與否決定是否執(zhí)行某個指令序列。 當(dāng)IF后面的邏輯表達(dá)式為真,則執(zhí)行指令序列1,否則執(zhí)行指令序列2。其中, ELSE及指令序列2可以沒有,此時,當(dāng)IF后面的邏輯表達(dá)式為真,則執(zhí)行 指令序列1,否則繼續(xù)執(zhí)行后面的指令。 ? | ? | |||||||||||||||||||||||||||||||||||||
| WHILE、WEND | WHILE??? 邏輯表達(dá)式 ???? 指令序列 WEND | WHILE、WEND偽指令能根據(jù)條件的成立與否決定是否循環(huán)執(zhí)行某個指令序列。當(dāng)WHILE后面的邏輯表達(dá)式為真,則執(zhí)行指令序列,該指令序列執(zhí)行完畢后,再判斷邏輯表達(dá)式的值,若為真則繼續(xù)執(zhí)行,一直到邏輯表達(dá)式的值為假。 | ? | ||||||||||||||||||||||||||||||||||||||
| MACRO、MEND MEXIT | MACRO $標(biāo)號 宏名 $參數(shù)1,$參數(shù)2,……指令序列 MEND | $標(biāo)號在宏指令被展開時,標(biāo)號會被替換為用戶定義的符號, 宏指令可以使用一個或多個參數(shù),當(dāng)宏指令被展開時,這些參數(shù)被相應(yīng)的值替換。 MEXIT用于從宏定義中跳轉(zhuǎn)出去 | ? | ||||||||||||||||||||||||||||||||||||||
| ? | AREA | AREA??? 段名??? 屬性1,屬性2,…… | 用于定義一個代碼段或數(shù)據(jù)段。其中,段名若以數(shù)字開頭,則該段名需用“|”括起來,如|1_test|。 | ? | |||||||||||||||||||||||||||||||||||||
| ? | ALIGN | AREA Init,CODE,ALIEN=3 | 指定后面的指令為8字節(jié)對齊 | ? | |||||||||||||||||||||||||||||||||||||
| ? | CODE | CODE16、CODE32 | 指定指令序列為16位的Thumb指令或32位的ARM指令 | ? | |||||||||||||||||||||||||||||||||||||
| ? | ENTRY | ? | 在一個完整的匯編程序中至少要有一個ENTRY(也可以有多個,當(dāng)有多個ENTRY時,程序的真正入口點(diǎn)由鏈接器指定),但在一個源文件里最多只能有一個ENTRY(可以沒有)。 | ? | |||||||||||||||||||||||||||||||||||||
| ? | EQU(*) | 名稱 EQU 表達(dá)式 {,類型} | 為程序中的常量、標(biāo)號等定義一個等效的字符名稱 | ? | |||||||||||||||||||||||||||||||||||||
| ? | EXPORT | EXPORT????? 標(biāo)號 | 用于在聲明一個全局的標(biāo)號,該標(biāo)號可在其他的文件中引用。EXPORT可用GLOBAL代替。 | ? | |||||||||||||||||||||||||||||||||||||
| ? | IMPORT | IMPORT????? 標(biāo)號 | 用于通知編譯器要使用的標(biāo)號在其他的源文件中定義,無論當(dāng)前源文件是否引用該標(biāo)號,該標(biāo)號均會被加入到當(dāng)前源文件的符號表中 | ? | |||||||||||||||||||||||||||||||||||||
| ? | EXTERN | EXTERN????? 標(biāo)號 | 用于通知編譯器要使用的標(biāo)號在其他的源文件中定義,但要在當(dāng)前源文件中引用,如果當(dāng)前源文件實(shí)際并未引用該標(biāo)號,該標(biāo)號就不會被加入到當(dāng)前源文件的符號表中 | ? | |||||||||||||||||||||||||||||||||||||
| ? | GET | GET???? 文件名 | 將一個源文件包含到當(dāng)前的源文件中,并將被包含的源文件在當(dāng)前位置進(jìn)行匯編處理 | ? | |||||||||||||||||||||||||||||||||||||
| ? | INCBIN | INCBIN????? 文件名 | INCBIN偽指令用于將一個目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文件中,被包含的文件不作任何變動的存放在當(dāng)前文件中,編譯器從其后開始繼續(xù)處理 | ? | |||||||||||||||||||||||||||||||||||||
| ? | RN | 名稱??????? RN????? 表達(dá)式 | RN偽指令用于給一個寄存器定義一個別名 | ? | |||||||||||||||||||||||||||||||||||||
| ? | ROUT | {名稱}? ROUT | ROUT偽指令用于給一個局部變量定義作用范圍。在程序中未使用該偽指令時,局部變量的作用范圍為所在的AREA,而使用ROUT后,局部變量的作為范圍為當(dāng)前ROUT和下一個ROUT之間。 | ? | |||||||||||||||||||||||||||||||||||||
| ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Benzo/p/3342372.html
總結(jié)
以上是生活随笔為你收集整理的arm 指令1(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英文网名女生霸气冷酷162个
- 下一篇: 正确理解ContentPresenter