ARM 汇编指令集 (学习笔记整理)

ARM 汇编指令集 (学习笔记整理)

变量类型

  • 全局和静态变量保留在 RAM 里,需要使用 loads/stores 访问外部存储器 - 很慢
  • 局部变量通常放在寄存器中,用来快速高效处理。(如果编译器的寄存器分配算法认为超过现有的寄存器数量,将把变量压入栈中)
  • 对局部变量,用 word-size(int) 代替halfword 和 byte: 为了确保不受其他条件影响,可特别指定使用 32 bit 寄存器变量。

数据处理指令

  • 算术指令
    • ADD 加法 ADD R1 R2 R3 //R1 = R2+R3
    • ADC 带进位加法
    • SUB 减法
    • SBC 带借位减法
    • RSB 逆向减法
    • RSC 带位逆向减法指令
  • 逻辑指令
    • AND 按位与
    • ORR 按位或
    • EOR 逻辑异或操作指令
    • BIC 按位清零
  • 比较指令
    • CMP 比较指令 (CMP指令就是从寄存器中减去表示的数值,根据操作的结果更新CPSR中的条件标志位,该更新是默认更新,无需是否添加"S"。)
    • CMN 基于相反数的比较指令 (CMN指令是指将寄存器中的值加上表示的数值,根据操作的结果更新CPSR中的条件标志位,该更新是默认更新,无需是否添加"S"。)
    • TST 位测试指令 (TST指令通常用于测试寄存器中某些位是1还是0,一般会与BEQ或者BNE指令配合使用完成条件判断跳转功能。)
    • TEQ 相等测试指令 (TEQ指令通常用来判断两个数是否相等,但这种比较操作不会影响到CPSR寄存器中的V位跟C位;同时,TEQ指令也可用于比较操作数符合是否相同,该指令执行后,CPSR寄存器中的N位位两个操作数符号位做异或的结果。)
  • 数据搬移
    • MOV 数据传输指令 MOV R1, R2 // R1 = R2
    • MVN 数据求反传送指令 MVN R1, R2 // R1=~R2
      上述指令只能对寄存器操作,不能针对存储器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值