屌丝学arm汇编-04-ldr的使用小结
来源:互联网 发布:java javaagent 编辑:程序博客网 时间:2024/06/15 00:07
ldr作为用法在arm中比较常见,为了搞清楚其区别今天特意写了一个demo,贴出来把心得记下来。
ADS1.2的工程
代码路径:http://download.csdn.net/download/losting_boy/9620660
//start.s
AREA SCopy, CODE, READONLY
COUNT EQU 0x300
IMPORT test
entry
start
;伪指令
ldr r0,=COUNT
;跳转方式1(位置不相关)反汇编中有很多类似的用法
ldr r1,=(test1 - tag)
mov lr,pc
add pc,pc,r1
;跳转方式2
mov lr,pc
tag ldr pc,=test
;跳转方式3
mov lr,pc
b test
;跳转方式4
bl test
;加载寄存器r2中地址的内存区间
ldr r3,[r2]
mov lr,pc
b test2
test1
mov r5,#0x1
mov pc,lr
test2
;注意二者的区别,前者是指令对应的内存地址,是代码指令的地址,
ldr r4,test1 //首先test1其实就是地址,这里加载的[test1]处的内存
ldr r5,=test1 //伪指令,就是test1地址赋值给r5,这个表述有些麻烦最好能调试看下
ldr r6,=(test2 - test1) //伪指令,赋值test2 - test1
//可以调试下上面三者
stop
b .
END
//test.c
#include <stdio.h>
extern int test(int i,int j);
int test(int i,int j)
{
int c = 0;
i++;//
i = i + 3;
sub_func(10,1,2,3,4,5);
c = c+4;
}
//这个故意写了5个参数,主要是反编译看下ATPCS约定
int sub_func(int a,int b,int c,int d,int f)
{
return a - b - c - d - f;
}
- 屌丝学arm汇编-04-ldr的使用小结
- 屌丝学arm汇编-06-thumb模式下ldr和bl一起使用需要注意的
- 说说ARM汇编的LDR伪指令
- 说说ARM汇编的LDR伪指令
- 说说ARM汇编的LDR伪指令
- 说说ARM汇编的LDR伪指令
- ARM汇编中的LDR
- ARM LDR汇编指令
- ARM 汇编 LDR STR MOV
- ARM汇编-LDR指令学习
- ARM汇编中ldr与adr的区别
- ARM汇编中ldr与adr的区别
- ARM汇编中LDR与LTORG的关系
- ARM汇编中ldr与adr的区别
- ARM汇编中LDR和ADR的区别
- ARM汇编中ldr与adr的区别(转)
- ARM汇编中ldr与adr的区别(转)
- ARM汇编中LDR与LTORG的关系
- 剑指Offer_65_矩阵中的路径
- 面向对象的理解与设计
- 10013---PMP考试六大管理学定律
- 解决fbreader从书架打开的是同一本书问题
- 实现web树
- 屌丝学arm汇编-04-ldr的使用小结
- stm32 内部AD和DMA使用
- 冯大辉从丁香园离职,胜利者不应受到谴责吗?
- 关于隐藏属性与表单提交的问题
- python_使用asycnio协程的一些经验
- Java(字符流使用)
- Java使用第三方jar包实现邮件验证码
- 冯大辉这件事情上我支持大辉
- 维护x的秩