ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[Mobi] ARM 反汇编速成

2021-09-04 15:32:40  阅读:233  来源: 互联网

标签:Mobi R0 R1 地址 寻址 反汇编 寄存器 数据 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

 

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

标签:Mobi,R0,R1,地址,寻址,反汇编,寄存器,数据,ARM
来源: https://www.cnblogs.com/farwish/p/15226741.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有