三星soc平臺Exynos4412平臺裸機開發介紹(三)之ARM彙編指令集介紹

ARM彙編指令介紹

1. 傳輸指令(mov)

將r1的值賦值給r0( r0 = r1)

  • mov r0, r1

2. 取反傳輸指令(mvn)

將~r1的值賦值給r0( r0 = ~r1)

  • mvn r0, r1

3. 運算指令(add、sub)

加法指令,將r0+r1的值賦值給r0,(r0 = r0 + r1)

  • add r0, r1

減法指令,將r0-r1的值賦值給r0,(r0 = r0 - r1)

  • sub r0, r1

4. 位操作指令(and、orr、eor、bic)

按位與指令, r0 = r1 & r2

  • and r0, r1, r2

按位或指令, r0 = r1 | r2

  • orr r0, r1, r2

按位異或, r0 = r1 ^ r2

  • eor r0, r1, r2

位清除指令, r0 = r1 & (~r2)

  • bic r0, r1, r2

5. 比較指令(cmp、cmn、tst、teq)

直接比較指令, r1 - r2, 根據結果改變cpsr寄存器標誌位 z位

  • cmp r1, r2

負數比較, r0 + r1 ==>r0 - (~r1)

  • cmn r0 , r1

位測試, 判斷 r1寄存器內的數值爲1的那些位,r0對應的那些位是否爲0

  • tst r0, r1

測試相等 進行異或運算給據結果更改cpsr寄存器的值

  • teq r0, r1

6. 跳轉指令(b、bl)

短跳轉,相對跳轉。
不帶返回的跳轉,fun爲標號。

  • b fun

帶返回的跳轉,fun爲標號。

  • bl fun

長跳轉,ldr
將0x12345678寫入pc

  • ldr pc, =0x12345678

7. 內存操作指令(ldr、str)

ldr從內存加載數據到寄存器

  • ldr r0, [r1] ==== r0 = *r1

str保存寄存器的數值到內存地址

  • str r0, [r1] ==== *r1 = r0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章