三星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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章