我对LDR指令的理解
来源:互联网 发布:sql tools 编辑:程序博客网 时间:2024/06/16 16:50
LDR PC, =MyIRQHander
LDR PC,MyIRQHander
LDR PC, =MyIRQHander
MyIRQHander:
MOV R1,R2
MyIRQHander 是内存的地址,MOV R1,R2是内容,也就是1个32bit的数(机器码)。
指令执行后,PC的内容是机器码所在内存处的地址,也就是MyIRQHander
如果写成:
LDR PC, MyIRQHander
MyIRQHander:
MOV R1,R2
那么PC的内容就是MyIRQHander地址处的内容,即MOV R1,R2指令的机器码,不是我们想要的。
如果写成:
LDR PC, MyIRQHander
MyIRQHander:
.word IRQHanderFunc
IRQHanderFunc:
MOV R1,R2
意思是PC取得的是MyIRQHander地址处的内容,也就是IRQHanderFunc的值,即MOV R1,R2指令所在的地址。
在C语言中:
void (*MyIRQHander)(void); MyIRQHander是一个函数指针,其实也就是一个指针型的变量。
void IRQHanderFunc(void)
{
R1 = R2;/*伪代码*/
}
MyIRQHander:
.word IRQHanderFunc
相当于:MyIRQHander = IRQHanderFunc;
//////////////////////////////////////////////////////////////////////////////////////////////
LDR R1,VAR
VAR:
.word 0x12345678
类似于
int VAR = 0x12345678;
R1 = VAR;
////////////////////////////////////////////////////////////////////////////////////////////////
LDR R1,VAR
VAR:
.word VAR2
VAR2:
.word 0x12345678;
int *VAR;
int VAR2;
VAR = &VAR2;
R1 = VAR;/*R1最后存储的是0x12345678内容所在的地址*/
LDR PC,MyIRQHander
LDR PC, =MyIRQHander
MyIRQHander:
MOV R1,R2
MyIRQHander 是内存的地址,MOV R1,R2是内容,也就是1个32bit的数(机器码)。
指令执行后,PC的内容是机器码所在内存处的地址,也就是MyIRQHander
如果写成:
LDR PC, MyIRQHander
MyIRQHander:
MOV R1,R2
那么PC的内容就是MyIRQHander地址处的内容,即MOV R1,R2指令的机器码,不是我们想要的。
如果写成:
LDR PC, MyIRQHander
MyIRQHander:
.word IRQHanderFunc
IRQHanderFunc:
MOV R1,R2
意思是PC取得的是MyIRQHander地址处的内容,也就是IRQHanderFunc的值,即MOV R1,R2指令所在的地址。
在C语言中:
void (*MyIRQHander)(void); MyIRQHander是一个函数指针,其实也就是一个指针型的变量。
void IRQHanderFunc(void)
{
R1 = R2;/*伪代码*/
}
MyIRQHander:
.word IRQHanderFunc
相当于:MyIRQHander = IRQHanderFunc;
//////////////////////////////////////////////////////////////////////////////////////////////
LDR R1,VAR
VAR:
.word 0x12345678
类似于
int VAR = 0x12345678;
R1 = VAR;
////////////////////////////////////////////////////////////////////////////////////////////////
LDR R1,VAR
VAR:
.word VAR2
VAR2:
.word 0x12345678;
int *VAR;
int VAR2;
VAR = &VAR2;
R1 = VAR;/*R1最后存储的是0x12345678内容所在的地址*/
0 0
- 我对LDR指令的理解
- 关于LDR指令的理解
- 关于adr和ldr指令的理解
- 理解adr,ldr指令
- 理解adr,ldr指令
- 理解adr,ldr指令
- 关于adr与ldr伪指令的理解
- MOV指令、LDR指令、LDR伪指令之间的区别
- MOV指令、LDR指令、LDR伪指令之间的区别
- LDR伪指令LDR数据传送指令的区别
- ARM LDR指令和LDR伪指令的总结
- ARM指令 LDR、LDR伪指令、MOV的区别
- MOV、LDR加载指令和LDR伪指令的区别
- LDR指令和LDR伪指令的区别
- LDR,STR指令的用法
- LDR指令
- LDR指令
- LDR指令
- 最长递增子序列(LIS)问题
- csu1646 HearthStone
- 32.透明状态栏
- RotateAnimation 设置旋转中心点、不停顿
- 设计模式的6大原则
- 我对LDR指令的理解
- Python之Numpy之pandas
- Linux
- 如何将LogCat上的日志输出到文件?
- Rails: 通过模型中添加Vitrual Attribute精简控制层代码
- 解析xml工具
- 关于js动态添加的时候样式失效的问题
- bzoj4572
- 16、jsp入门