请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:F29H850TU 工具/软件:
我们在使用扩展的“asm"命令“命令时发现了一个问题。  例如、如果寄存器的值要存储在全局 C 变量中、 
编译器为变量地址提供一个“Dx"寄存“寄存器、而不是“Ax"寄存“寄存器、这会导致编译错误: 

为了在您这边重现此问题、我们修改了 SDK 的示例“led_ex1_blinky.c":“:
#include "board.h"
uint32_t sp;
int main (void)
{
    Device_init();
    Board_init();
    
    /* Compilation fails as the compiler selects a `Dx` register instead of a `Ax` register to load the address of `sp`. */
    __asm volatile("ST.32 *%0, A15" : : "r"(&sp));
    
    for(;;)
    {
        GPIO_writePin(myBoardLED1_GPIO, 0);
        DEVICE_DELAY_US(1000000);
        GPIO_writePin(myBoardLED1_GPIO, 1);
        DEVICE_DELAY_US(1000000);
    }
}
我们使用基于 makefile 的构建来构建示例:“gmake -s led_ex1_blinky.c profile={DEBUG_O0|debug_O1}config=flash“ 
使用的编译器:“TI C29 Clang 编译器 1.0.0.LTS“ 
提前感谢大家。