Arm Reference

本章节包括ARMv6指令集,寄存器集以及GNU汇编程序语法。

1、ARM指令集个别指导(Tutorial)

接下来列出在课程中所有使用的指令。

ldr reg,=val :把一个数值val,放入一个叫做reg寄存器中
mov reg,#val  :把一个数值val,放入一个叫做reg寄存器中
lsl reg,#val :把reg寄存器中的值左移动val位
str reg,[dest,#val] :  把reg寄存器中的值写入到dest+val的内存地址中

name :下一行指令的标签

b label :跳转指令,跳转到标签指定的下一行指令
sub reg,#val  : 将寄存器reg中的值减去val
cmp reg,#val  :将寄存器reg的值和val进行比较
ne :后缀指令,如cmpne,表示不等于(not equal)的时候,执行后面的指令。!=
.global lbl : lbl这个标签是外部文件中去访问它。

mov reg1,reg2 :把reg2的值拷贝到reg1中

ls :后缀指令 <= 意思   (unsigned)无符号比较

hi :后缀指令 >意思 (unsigned)

push (reg1,reg2,reg3...) :将reg1,reg2,reg3...入栈,只有一般目的寄存器,lr寄存器可以入栈

bl lbl :lr寄存器保存了下一行的地址,跳转到lbl后,可以执行mov PC,lr回到下一行的执行指令。

add reg,#val :将寄存器reg中的值+val

mov r1,12
mov r0,r1,lsl#2 :这两个指令结果r0值是12<<2

lsl reg1,reg2 :将reg1的值左移reg2的值

str reg,[dst] :等价str reg,[dst,#0]

pop (reg1,reg2,reg3...),出栈,不多说了

(未用到,暂时待定)别名(alias).req reg :
    .unreq:

lsr dst,src,#val :逻辑右移,参照左移

and reg,#val : 逻辑与

teq reg,#val : reg的值是否等于val

ldrd regLow,regHigh,[src,#val] :双字节读取,将src+val地址的值按8位双子节读取到regLow和regHigh两个寄存器中

.align num :确保下一行地址按照2num次幂对齐

.int val  :输出val

tst reg,#val :reg和val逻辑与,为0时相等

strh reg,[dest] :将寄存器的half world 低位存储到dest地址中。
.i
.
.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值