ZHCUAQ1F july 2015 – april 2023
near 全局和静态数据存储在 .bss 段中。程序的所有 near 数据必须存入 32K 字节的内存中。此限制源自用于访问近数据的寻址模式,该模式与数据页指针 DP (B14) 之间的无符号偏移限制为15位。
对于某些应用程序,可能需要多个具有独立的 near 数据实例的数据页。例如,一个多通道应用程序可能具有运行在不同数据页上的同一程序的多个副本。该功能由C6000 编译器的内存模型支持,称为位置无关数据。
位置无关数据意味着所有近数据访问都与数据页 (DP) 指针相关,从而允许在运行时更改 DP。编译器在三个方面实现了位置无关数据:
STW B4,*DP(_a)
.global _a
.bss _a,4,4
所有近直接访问都与DP相关。
MVK (_a - $bss),A0
ADD DP,A0,A0
表达式 (_a - $bss) 可以计算符号 _a 距 .bss 段开头始的偏移量。编译器在生成的汇编代码中定义全局 $bss。$bss 的值是 .bss 段的起始地址。