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 中所示。