美文网首页
ARM汇编代码速成。

ARM汇编代码速成。

作者: 曾经灬 | 来源:发表于2018-11-06 21:34 被阅读0次

ARM指令集

1.跳转指令

B 无条件跳转
BL 带链接的无条件跳转
BX 带状态切换的无条件跳转
BLX 带链接和状态切换的无条件跳转
B loc_地址
BNE,BEQ

2.存储器与寄存器交互数据指令 核心

存储器(主存,内存)
寄存器中放的数据:可以是字符串,可以是数,也可以是一个地址,它可以放各种类型的数据 
存储地址单元:地址(如0x00004000)与地址中存在的值

LDR:从存储器中加载数据到寄存器 ← Load
LDR R8,[R9,#04] R8为待加载数据的寄存器,加载值为R9+0x4所指向的存储单元

STR:将寄存器的数据存储到存储器 → Store
STR R8,[R9,#04] 将R8寄存器的数据存储到R9+0X04指向的存储单元

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

STM:将一个寄存器列表的数据存储到指定的存储器  ←

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

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

堆,队列:数据结构,栈是竖的,后进先出,且只能从栈顶依次填入数据

3.数据传送指令

MOV:将立即数或寄存器的数据传送到目标寄存器 ←
MOV R0, #8 R0=8

4.数据算术运算指令

←
ADD,SUB,MUL,DIV

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

5.数据逻辑运算指令

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

LSL R0,R1,#2 R0=R1*4

6.比较指令

CMP:比较
CMP R0 #0       R0寄存器中的值与0比较
标志位:如z位,这个都可以在动态调试时,寄存器窗口看到

7.其他指令

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

8.寄存器寻址方式

立即寻址:MOV R0,#1234 R0=0X1234
寄存器寻址:MOV R0,R1 R0=R1
寄存器移位寻址:MOV R0,R1,LSL #2    R0=R1*4
寄存器间接寻址:LDR R0,[R1] 将R1寄存器中的值作为地址,取出地址中的值赋予R0
寄存器间接基址偏移寻址:LDR R0,[R1,#-4]将R1寄存器的值-0x4的值作为地址,取出地址中的值给R0

对int a=0;这一句简单高级语言的汇编理解,首先会开辟一个内存存储单元,然后把0x0这个数放入R0寄存器,
然后再把R0寄存器的数据放入内存存储单元。所以:
MOV R0,#0
STR R0,[R11,#0x14+var_20]

注意:
变量要看存储单元地址,不要以为是寄存器,简单时可以这么看,但试想,如果寄存器是变量,那得要多少
寄存器。寄存器就是一个桥梁,和存储器即存储单元地址交互的东西。

相关文章

  • ARM汇编代码速成。

    ARM指令集 1.跳转指令 2.存储器与寄存器交互数据指令 核心 3.数据传送指令 4.数据算术运算指令 5.数据...

  • ARM汇编基础(iOS逆向)

    ARM汇编基础 在逆向一个功能的时候,往往需要分析大量的汇编代码,在iOS逆向中,ARM汇编是必须掌握的语言,本文...

  • ARM汇编基础(iOS逆向)

    ARM汇编基础 在逆向一个功能的时候,往往需要分析大量的汇编代码,在iOS逆向中,ARM汇编是必须掌握的语言,本文...

  • ARM64汇编入门 - 汇编基础

    ARM64汇编入门 - 汇编基础ARM64汇编入门 - 汇编基础

  • 我竟在arm汇编除法算法里找到了leetcode某道题的解法

    今天讲讲arm汇编中除法的底层实现。汇编代码本身比较长了,如需参考请直接拉到文末。 下面我直接把arm的除法算法的...

  • ARM循环汇编代码

    链接 Java循环结构 Thumb的循环结构 C++代码与Java代码几乎是一字未改: 我们下面来看看16位的Th...

  • iOS逆向学习(arm64汇编入门)

    iOS汇编 iOS汇编语音有很多钟。常见的有8086汇编、arm汇编、x86汇编等等。 arm汇编 iOS的架构从...

  • pwnable.kr wp

    leg 理解arm 汇编代码 知识点 :pc : 当前指令地址 + 8arm 和 asm不同asm 的 rip 指...

  • iOS汇编基础(二)寄存器

    以arm64为例 xcode调试汇编 1. xcode 查看运行时的汇编代码 debug -> debug wor...

  • arm64汇编基础

    iOS汇编 真机:arm64汇编 模拟器:x86汇编 将c语言的代码转化成汇编: 1. 寄存器 lldb查看当前a...

网友评论

      本文标题:ARM汇编代码速成。

      本文链接:https://www.haomeiwen.com/subject/otypxqtx.html