一次在开发中遇到了问题,在百度上查资料,看到了百度提问中的一篇提问,内容如下:
==================================================================
有几个问题,请大家指教一下:
1。 LDR r0, =|Image$$RO$$Limit| LDR r1, =|Image$$RW$$Base| LDR r3, =|Image$$ZI$$Base| 这是什么意思啊,请具体讲解一下 2。 [ PLLONSTART ldr r0,=PLLCON ;temporary setting of PLL ldr r1,=((M_DIV<<12)+(P_DIV<<4)+S_DIV) ;Fin=10MHz,Fout=40MHz str r1,][r0] ]
中的[ ]是什么意思,我翻遍了买的书都没找到。 3。 [ {CONFIG} = 16 THUMBCODE SETL {TRUE} CODE32 | THUMBCODE SETL {FALSE} ]
中的|是什么意思? 4。beq %F2 b %B0 是什么意思?
觉得初学者实在不晚,忍不住,便将答案写到下面: =================================================
1 一个arm程序由RO,RW,ZI三个断组成 其中RO为代码段,RW是已经初始化的全局变量,ZI是未初始化的全局变量(对于GNU工具 对应的概念是TEXT ,DATA,BSS) bootloader要将RW段复制到ram中并将ZI段清零 编译器使用下列段来记录各段的起始和结束地址 ; |Image$$RO$$Base| ; RO段起始地址 ; |Image$$RO$$Limit| ; RO段结束地址加1 ; |Image$$RW$$Base| ; RW段起始地址 ; |Image$$RW$$Limit| ; RW段结束地址加1 ; |Image$$ZI$$Base| ; ZI段起始地址 ; |Image$$ZI$$Limit| ; ZI段结束地址加1
2 符号“[”和“] ”翻译为C语言意为 “[” =if “]” = endif 3 “|" = else 4 标号地址跳转,F是向后寻找,B是向前 ===================================================
其实这些都是重要的小常识,为什么这么多的ARM开发书籍不集中讲解一下呢!