我们在汇编文件中经常会见到.word指令,如下所示:
label:.word express
label,是一个标签,它是一个链接地址的别名,相当于一个指针。
express,表示链接地址处的内容,相当于指针所指向的内容。
.word,它是arm汇编的伪指令,表示“当前地址的值为XX”。比如,.word 0x2000表示当前地址的值为0x2000,.word _start 表示当前地址的值为_start。
label:.word pLinkAddressldr r0,label ///将label指向的内容(即pLinkAddress)赋值给r0//label只是个标识,是链接地址的别名,cpu是不会认label的,这个label是给程序员看的ldr pc,label //pc是程序计数器,这样相当于将程序跳转到label指向地址处进行执行
我们在来查看一下u-boot的反汇编文件中的内容,来证明前面的论证:
/***start.S源文件中定义××××××××***/
/********************************
__TEXT_BASE.word TEXT_BASE
********************************//***u-boot.s反汇编内容××××××××***/
33f80040 <_TEXT_BASE>:
33f80040: 33f80000 mvnscc r0, #0
从上可见,这里__TEXT_BASE这个标识对应的链接地址为0x33f80040,而0x33f80040这个地址处的内容则是0x33f80000。