惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
阮一峰的网络日志
阮一峰的网络日志
A
About on SuperTechFans
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
V
Visual Studio Blog
Martin Fowler
Martin Fowler
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 叶小钗
I
InfoQ
B
Blog RSS Feed
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
P
Proofpoint News Feed
WordPress大学
WordPress大学
小众软件
小众软件
B
Blog
MongoDB | Blog
MongoDB | Blog
人人都是产品经理
人人都是产品经理
量子位
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客

博客园 - embed

TCP IP for embed system [zt]模拟视频 入门 UDP and TCP difference reference book list linux device driver study(chapter2) 2004年的最后一帖 mips的函数调用与堆栈 yuv2rgb 优化与优化工具 dsp编程学习 图象传感器厂家 一些电路的FAQ 算法的书 TCP的写 rtos's schedule algorithm c++ 学习 关于密码学方面的书 编译原理方面的书 算法的书
arm assembly note
embed · 2004-11-16 · via 博客园 - embed

注意这些指令的配对使用,例如stmdb/ldmia

2)关于!
表示数据回写
例如:
ldr r0,[r1]!
stmdb sp!,{r0,r4}
!用于前索引方式中表示数据回写,例如:ldr r0,[r1,#4]!
后索引方式不用!,数据始终回写,例如:ldr r0,[r1],#4
对堆栈方式中用!,表示堆栈自动增加或者减少

3)访问内存的LDR/STR指令索引方式
ldr r0,[r1,#4]前索引,先加
ldr r0,[r1],#4后索引,后加

4)比较常用的加载地址指令
Var EQU 0x1000
ldr r0, =Var
EQU生成的实际是一个标号(定义变量?),用于相对积存器寻址,与PC相对寻址相对。用EQU生成的标号用于数据段寻址。

5)关于DCD指令,注意与EQU不同,相应的ldr指令用法也不同.
定义一段内存区
semantec
Label DCD expr
例如:
ldr pc,Vector
    ....
Vector DCD restVector
restVector
    ....

(6)LTORG与LDR
LTORG是与LDR联合使用的literal pool,可以在函数尾部声明,这样相对PC偏移最少,如果不用LTORG,则编译器自动在(整个)程序末尾声名,但这样偏移有可能太大而编译不通过.