zoukankan      html  css  js  c++  java
  • ARM 反汇编速成

    1、跳转指令

      B        无条件跳转

      BL      带链接的无条件跳转

      BX      带状态切换的无条件跳转

      BLX       带链接和状态切换的无条件跳转

      B  loc_地址

      BNE, BEQ

    2、存储器与寄存器交互数据指令(核心)

      存储器(主存,即内存)

      寄存器中放的数据:可以是字符串,可以是数,也可以是一个地址,它可以放各种类型的数据

      存储地址单元:地址(如0x00004000)与地址中存在的值

      

      LDR:从存储器中加载数据到寄存器    LoaD Register   <-  

      LDR  R8, [R9,#04]  R8为待加载数据的寄存器,加载值为 R9+0x4 指向的存储单元

      

      STR:将寄存器的数据存储到存储器    STore Register   ->

      STR  R8,[R9,#04]   R8寄存器的数据存储到 R9+0x04 指向的存储单元

      

      LDM:将存储器的数据加载到一个寄存器列表  LoaD Multiple  ->

      LDM  R0, {R1-R3}  将 R0 指向的存储单元的数据依次加载到 R1,R2,R3 寄存器

      STM:将一个寄存器列表的数据存储到指定的存储器  STore Multiple  <-

      

      PUSH:将寄存器值推入堆栈

      POP  :将堆栈值推出到寄存器

      SWP:将寄存器与存储器之间的数据进行交换

      SWP  R1,R1 [R0]  将 R1 寄存器与 R0 指向的存储单元的内容进行交换

      

    3、数据传送指令

      MOV:将立即数或寄存器的数据传送到目标寄存器  <-

      MOV  R0, #8   0x8数据传送给R0,相当于赋值

    4、数据算术运算指令

      <-

      ADD, SUB, MUL, DIV

      有符号,无符号运算:带进位运算

    5、数据逻辑运算指令

      与:AND

      或:ORR

      异或:EOR

      移位:实质是乘,除,类似于小数点移位,但相反。小数点左移,数变小;右移变大。逻辑移位,左移变大,右移变小,且按2的倍数进行,因为是2进制。

      LSL:逻辑左移 Logical Shift Left  <-

      LSR:逻辑右移 Logical Shift RIght ->

    6、比较指令

      CMP:比较

      CMP  R0  #0  R0寄存器中的值与0比较

      标志位:如z位,这个都可以在动态调试时,寄存器窗口看到

    7、其它指令

      协处理器指令:SWT(切换用户模式)

      伪指令:DCB

    8、寄存器寻址方式

      立即寻址:MOV  R0,#1234

      寄存器寻址:MOV R0,R1

      寄存器移位寻址:MOV  R0,R1,LSL  #2

      寄存器间接寻址:LDR R0,[R1]  将R1寄存器中的值作为地址,取出地址中的值赋值给R0

      寄存器间接基址偏移寻址:LDR  R0,[R1, #-4]  将R1寄存器的值减 0x4 的值作为地址,取出地址中的值给R0

    汇编:

      机器语言,高级语言的逆向

    分析和修改汇编指令:

      赋值、跳转、算术运算、移位运算、堆栈运算、内存读写指令、函数调用约定。 

    用户模式:

      不分组寄存器(R0-R7)

      分组寄存器(R8-R14)

    传递参数与返回值(Ro-R3)

    保存栈顶地址(R13/SP)

    保存函数的返回地址(R14/LR)

    程序计数器R15(PC)

    状态寄存器CPSR

    ARM处理器:

      ARM状态(执行32位对齐指令的ARM指令)

      Thumb状态(执行16位对齐的Thumb指令)

    补充:常用ARM指令集及汇编

    Link:https://www.cnblogs.com/farwish/p/15226741.html

  • 相关阅读:
    jQuery EasyUI API 中文文档 可调整尺寸
    jQuery EasyUI API 中文文档 链接按钮(LinkButton)
    jQuery EasyUI API 中文文档 手风琴(Accordion)
    jQuery EasyUI API 中文文档 表单(Form)
    jQuery EasyUI API 中文文档 组合(Combo)
    jQuery EasyUI API 中文文档 布局(Layout)
    jQuery EasyUI API 中文文档 拆分按钮(SplitButton)
    jQuery EasyUI API 中文文档 菜单按钮(MenuButton)
    jQuery EasyUI API 中文文档 搜索框
    jQuery EasyUI API 中文文档 验证框(ValidateBox)
  • 原文地址:https://www.cnblogs.com/farwish/p/15226741.html
Copyright © 2011-2022 走看看