EDA365电子论坛网

标题: "LDR R0, =PINSEL0" 中"="是什么意思? [打印本页]

作者: Dollche    时间: 2022-11-18 10:28
标题: "LDR R0, =PINSEL0" 中"="是什么意思?
"LDR R0, =PINSEL0" 中"="是什么意思?
3 b9 ^; ^/ p' v3 T! U) }& n7 f这语句是取地址还是取地址中的内容呢?
0 `6 L0 I' h+ T$ q' ]# i) b$ |- z; b8 d. m* c" L

作者: Terran    时间: 2022-11-18 11:17
这是 LDR 伪指令,可用来加载 32 位立即数或地址,LDR R0,=PINSEL0 是将 PINSEL0 的地址加载到 R0 中。
作者: VIC56    时间: 2022-11-18 13:32
ldr r0, =0xFFF0 @伪指令
7 I& k( ^! l$ a5 ^) ^" Z3 Uldr r0, 0xFFFF @指令  O- }8 [- {4 U( J$ M+ F: b- W
直观的区别就是ldr伪指令使用时,后面的数据前会有"=",实际使用时,大部分都使用伪指令,这样就不用考虑合法和非法立即数的问题。
作者: niubility    时间: 2022-11-18 14:05
编译器会将ldr伪指令进行替换,用文字池的方式来解决非法立即数的问题。文字池就是划分出一段地址空间用来存放常量或者地址,需要时用基址+变址的方式去取数据,这样就不用受到合法立即数的限制,可以表示32bit的数据。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2