2星嵌入式系统研究

arm64汇编基础

2019-10-28  本文已影响0人  李永开

一.iphone X - arm64截图

lldb输入命令register read
  • CPSR 状态寄存器
  1. 第31位(0-31) N(Negative): 记录相关指令(add、sub、orr等逻辑或算数)执行后,其结果是否为负.如果为负,N=1 非负,N=0
  2. 第30位 Z(Zero): 记录相关指令后,结果为0,Z=1 非0,Z=0
  3. 第29位 C(Carry): 进位标识符,一般进行无符号数的运算.
    加法运算:当运算结果产生了进位时(无符号数溢出), C=1 否则C=0
    减法运算(包括CMP):当运算产生了借位时(无符号数溢出),C=0 否则C=1

tips: arm64是递减栈
栈是从高地址向低地址扩算,堆是从低地址向高地址扩散

二. 常用指令

  1. str :store register 将寄存器写入内存,入栈
  2. ldr : load register 将内存读到寄存器,出栈
  3. bl : b代表跳转, L代表lr寄存器, 跳转并给lr寄存器赋值
  4. ret : 让cpu执行lr寄存器里面的东西
  5. adrp (adress page, 一般和add同时出现): 找到常量或者全局变量所在的内存页(内存地址是分页管理的,每10k为一页)
上一篇下一篇

猜你喜欢

热点阅读