This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EK-TM4C123GXL:内联 asm 汇编代码的表达式错误术语

Guru**** 1567975 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1240063/ek-tm4c123gxl-bad-terms-in-expression-for-inline-asm-assembly-code

器件型号:EK-TM4C123GXL

尊敬的

我在使用____ asm 函数时从 CCS 编译器收到错误 消息、指出表达式中存在错误术语、我的汇编代码副本下方

_asm (
//将矢量表偏移更新为应用矢量表
" LDR r0、= 0x20004000\n"
" LDR R1、= 0xe000ed08\n"
" str r0,[R1]\n"

//从应用程序矢量表更新堆栈指针。 向量表的第一个条目是 SP
" LDR R1、[r0]\n"
" mov sp,r1\n"

//加载应用程序复位处理程序并跳转到用户代码
" LDR r0、[r0、#4]\n"
" bx r0\n");

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在这一行中...

    LDR r0,= 0x20004000\n"

    ... 专有 TI Arm 汇编器不支持 = 语法。  有关更多详细信息、请参阅 此论坛帖子。   

    对于最终不使用 LDR 指令的替代方案、请参阅 此论坛博文

    这两个解决方案的使用都非常充分、因此您可能应该在手动编码的汇编文件中重写此代码。   

    谢谢。此致、

    -乔治