我正在编写一个小型Cortex M0+引导程序。下面是一段内联汇编代码,它可以从Flash中的应用程序位置加载堆栈指针和复位处理程序,从而启动主应用程序。
#define FLASH_APP_START 0x1000
[...]
__asm(
// Update stack pointer from user code vector table
"LDR r0, =%0 \n"
"LDR r1, [r0] \n"
"MOV sp, r1 \n"
// Load user code reset handler and jump to the user code
"LDR r0, [r0, #4] \n"
"BX r0 \n"
:
: "X"(FLASH_APP_START)
:
);
当编译此代码时,我收到以下错误信息:
GCC在该常量之前添加了 #,这是不应该出现的。 如果将第一行替换为以下内容,则可以完美运行。错误:表达式不正确 -- “ldr r0,=#4096”
那么问题是如何使用已定义的常量?LDR r0, =0x1000
非常感谢您提供的帮助。