ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
您可以通过将 .set 指令与 .def 或 .global 指令结合使用,在汇编语言中定义全局常量,也可以使用链接器赋值语句在链接器命令文件中定义它们。这些常量只能通过使用特殊运算符从 C/C++ 中访问。
对于 C/C++ 或汇编语言中定义的变量,符号表包含变量所包含的值的地址。从 C/C++ 按名称访问程序集变量时,编译器使用符号表中的地址获取值。
但是,对于汇编语言常量,符号表包含常量的实际值。编译器无法分辨符号表中的哪些项是地址,哪些是值。如果按名称访问汇编语言(或链接器)常量,编译器将尝试使用符号表中的值作为地址来获取值。若要防止这种行为,必须使用 & (address of) 运算符来获取值 (_symval)。换而言之,如果 x 是汇编语言常量,那么它在 C/C++ 中的值是 &x。请参阅《ARM 汇编语言工具用户指南》中的“在 C/C++ 应用程序中使用链接器符号”,了解更多使用 _symval 的示例。
有关符号和符号表的更多信息,请参阅《ARM 汇编语言工具用户指南》中的“符号”部分。
您可以使用 cast 和 #define 来简化这些符号在程序中的使用,如Example6-5 和Example6-6 中所示。