我正在浏览 arch/arm/head.S 并找到下面的代码
__turn_mmu_on_loc:
.long .
.long __turn_mmu_on
.long __turn_mmu_on_end
我无法理解“.long .”?
我正在浏览 arch/arm/head.S 并找到下面的代码
__turn_mmu_on_loc:
.long .
.long __turn_mmu_on
.long __turn_mmu_on_end
我无法理解“.long .”?
请参阅GNU 汇编器手册:特殊点符号:
特殊符号 '
.
' 表示as
正在组装的当前地址。因此,表达式melvin: .long .
定义melvin
为包含它自己的地址。将值分配给与指令.
相同。.org
因此,表达式.=.+4
与说相同.space 4
。
因此,在您的代码段中,当前地址放在__turn_mmu_on
,__turn_mmu_on_end
符号的值之前。您在汇编程序文件和链接器脚本中经常看到类似的结构,因为它们布置了它们的数据结构。