1 2ARM彙編指令集的特點

2021-08-10 08:25:44 字數 1750 閱讀 5061

暫存器定址   mov r1,r2

立即定址 mov r#0xff00

暫存器移位定址 mov r0,r1,lsl #3

暫存器間接定址 ldr r1,[r2]

基址變址定址 ldr r1,[r2,#4]

多暫存器定址 ldmia r1!,

堆疊定址 stmfd sp!,(r2-r7,lr)

相對位址 flag:beq flag

b(byte)     功能不變,操作長度變為8位

h(half word) 功能不變,操作長度變為16位

s(signed) 功能不變,操作長度變為有符號

如ldr、ldrb、drh、ldrsb、

s(s標誌) 功能不變,影響cpsr標誌位

如mov和movs

mov r0,r1   0 相當於c語言當中的r0=r1

moveq r0,r1 0 如果eq字尾成立,則直接執行mov r0,r1;如果eq不成立,相當於沒有

0 類似於 c語言當中的if(eq)

多級指令流水線

:程式狀態暫存器,整個cpu只有乙個;而spsr有5個,分別在五種異常模式下,作用是當普通模式進入異常模式

時,用來儲存之前普通模式的cpsr的,以在返回普通模式是復原原來的cpsr.

b   直接跳轉

bl 跳轉前將返回位址儲存到lr暫存器,一般用於子程式呼叫

bx 跳轉同時切換到arm模式,一般用於異常處理的跳轉

單個字/半字/位元組訪問ldr/str

多位元組訪問 ldm/stm

8中字尾

ia (increase after) 先傳輸,再位址加4

ib (increase before) 先位址加4,再傳輸

da (dacrease after) 先傳輸,再位址減4

db (decrease before) 先位址減4,再傳輸

@用來作注釋,可以在行首也可以在**後面同一行直接跟,和c語言中//類似

#做注釋,一般放在行首,表示這一行都是注釋而不是**

:以冒號結尾的是標號

.點號在gun彙編中表示當前指令的位址

#立即數前面要加#或$

.global_start   @給_start外部鏈結屬性

.section.text @指定當前段為**段

.ascii.byte.short.long.word

.quad.float.string @定義資料

.align 4 @以16位元組對齊 2^4

.balignl 16,0xabcdefgh @對齊+(位)填充

.equ @類似於c中巨集定義

.end @檔案結束

.arm/.code 32 @宣告以下為arm指令

.thumb/code 16 @宣告以下為thumbm指令

ldr     大範圍的位址載入指令

adr 小範圍的位址載入指令

adrl 中等範圍的位址載入指令

arm中有乙個ldr指令,還有乙個ldr的偽指令

ARM彙編指令集

arm彙編指令集的介紹,包括指令和偽指令。指令指的是cpu機器指令的助記符,是由cpu的指令集提供的,經過編譯之後,會以二進位制機器碼的形式由cpu讀取執行 偽指令本質上不是指令,和cpu的機器指令沒有任何關係,只是和指令一起寫在 中而已,是由編譯器環境提供的,其目的是用於指導編譯過程,偽指令經過編...

ARM彙編指令集2

常用arm指令1 資料處理指令 資料傳輸指令 mov mov r1,r2 mov r1,0xff01 mvnmvn和mov用法是一樣的,區別是mov是原封不動的傳遞,而mvn是按位取反後傳遞 如r1 0xff,然後mov r0,r1後,r0 0xff,但 mvn r0,r1時,r0 0xffffff...

常用arm彙編指令 RISC指令集

ldr r0,r1 讀記憶體,r0等於r1所指向位址的值,相當於c語言r0 r1 str r0,r1 寫記憶體,把r0的值存放到r1所指向的位址中,相當於c語言 r1 r0 ldr r1,r2,4 基址變址定址,相當於c語言r1 r2 4 ldr r0,0x12345678 偽指令,編譯最終拆分為幾...