汇编基础 汇编指令

本文详细介绍了ARM汇编指令,包括bl、ret、mov、str等基本指令,以及cmp、b系列条件跳转指令,还涵盖了16位和32位的数据操作与存储指令,如LDR、STR、ADD、SUB等,以及转移指令如B、BL、CMP后的跳转,最后提到了一些特殊的系统和控制指令。
摘要由CSDN通过智能技术生成

转载自<https://www.jianshu.com/u/85e7cb4c5145>

字数 2,801阅读 1,728

  1.   * *bl* 指令 跳转到标号出执行

      o *b.le* :判断上面cmp的值是小于等于 执行标号,否则直接往下走
      o *b.ge* 大于等于 执行地址 否则往下
      o *b.lt* 判断上面camp的值是 小于 执行后面的地址中的方法 否则直接往下走
      o *b.gt* 大于 执行地址 否则往下
      o *b.eq* 等于 执行地址 否则往下
      o *B.HI* 比较结果是无符号大于,执行地址中的方法,否则不跳转
  * *ret* 返回
  * *mov* x0,#0x10 x0 = 0x10
  * *str* w10 ,[sp] 将w10寄存器的值存到 sp栈空间内存
  * *stp* x0,x1,[sp.#0x10] x0、x1 的值存入 sp + 0x10
  * *orr* x0,wzr,#0x1 x0 = wzr | 0x1
  * *stur* w10 ,[sp] 将w10寄存器的值存到 sp栈空间内存
  * *ldr* w10 ,[sp] w10 = sp栈内存中的值
  * *ldp* x0,x1,[sp] x0、x1 = sp栈内存中的值
  * *adrp* 通过基地址 + 偏移 获得一个字符串(全局变量)

     1. 将1的值,左移12位 1 0000 0000 0000 == 0x1000
     2. 将PC寄存器的低12位清零
     3. 将1 和 2 的结果相加
        adrp 是计算指定的数据地址 到当前PC值的相对偏移
        由于得到的结果是低12bit为0
        10 1024
        12 == 4KB

    总结
    adrp找到的是一个目标数据偏移的相对地址,他是一个不准确的地址,偏移的
    误差有4KB
    为什么偏移的误差是4KB呐? 在地址总线上面,10条地址总线的寻址能力是
    1024,12条地址总线的能力是4*1024 4KB

  * *cmp*:

    ZF=1则AX=BX
    ZF=0则AX!=BX
    CF=1则AX<BX
    CF=0则AX>=BX
    CF=0

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值