我正在尝试在GCC中编写内联汇编,该汇编将#define中的值写入寄存器。
#define SOME_VALUE 0xDEADBEEF
void foo(void)
{
__asm__("lis r5, SOME_VALUE@ha");
__asm__("ori r5, r5, SOME_VALUE@l");
}
Run Code Online (Sandbox Code Playgroud)
但是,在编译时出现错误:
未定义对“ SOME_VALUE”的引用
汇编程序是否可以#define在嵌入式汇编中看到它?
我已经通过执行以下操作解决了该问题:
#define SOME_VALUE 0xDEADBEEF
__asm__(".equ SOME_VALUE, 0xDEADBEEF");
void foo(void)
{
__asm__("lis r5, SOME_VALUE@ha");
__asm__("ori r5, r5, SOME_VALUE@l");
}
Run Code Online (Sandbox Code Playgroud)
但是,我真的不想重复该值。