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.

[参考译文] 编译器/CC1352R:编译器

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/665441/compiler-cc1352r-compiler

部件号:CC1352R

工具/软件:TI C/C++编译器

你(们)好

我正在尝试编译下面列出的内嵌汇编代码。

此代码来自开放源代码,用于优化现有的C代码。

静态内嵌SPX_word32_t MULT16_32_Q14 (SPX_word16_t x,SPX_word32_t y){
内部资源;
int虚拟;
ASM (
"smull %0,%1,%2,%3 \n\t"
"MOV %0,%0,LSR #14 \n\t"
"添加%0,%0,%1,LSL #18 \n\t"
:"=&r"(res),"=&r"(dummy)
:"r"(y),"r"((int) x));
退货;
}

#UNDEF MULT16_32_Q15
静态内嵌SPX_word32_t MULT16_32_Q15 (SPX_word16_t x,SPX_word32_t y){
内部资源;
int虚拟;
ASM (
"smull %0,%1,%2,%3 \n\t"
"MOV %0,%0,LSR #15 \n\t"
"添加%0,%0,%1,LSL #17 \n\t"
:"=&r"(res),"=&r"(dummy)
:"r"(y),"r"((int) x));
退货;
}

#UNDEF DIV32_16.
静态内联短DIV32_16 (int a,int b)

int res=0;
Int dead1,dead2,dead3,dead4,dead5;
__ASM_____volate___(.
"\teor %5,%0,%1\n"
"\tmovs %4,%0\n"
"\trsbmi %0,%0,#0 \n"
"\tmovs %4,%1\n"
"\trsbmi %1,%1,#0 \n"
"\tmov %4,#1\n"

"\tsubs %3,%0,%1,ASL #14 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #14 \n"

"\tsubs %3,%0,%1,ASL #13 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #13 \n"

"\tsubs %3,%0,%1,ASL #12 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #12 \n"

"\tsubs %3,%0,%1,ASL #11 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #11 \n"

"\tsubs %3,%0,%1,ASL #10 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #10 \n"

"\tsubs %3,%0,%1,ASL #9 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #9 \n"

"\tsubs %3,%0,%1,ASL #8 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #8 \n"

"\tsubs %3,%0,%1,ASL #7 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #7 \n"

"\tsubs %3,%0,%1,ASL #6 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #6 \n"

"\tsubs %3,%0,%1,ASL #5 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #5 \n"

"\tsubs %3,%0,%1,ASL #4 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #4 \n"

"\tsubs %3,%0,%1,ASL #3 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #3 \n"

"\tsubs %3,%0,%1,ASL #2 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #2 \n"

"\tsubs %3,%0,%1,ASL #1 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4,ASL #1 \n"

"\tsubs %3,%0,%1 \n"
"\tmovpl %0,%3 \n"
"\torrpl %2,%2,%4 \n"

"\tmovs %5,%5,LSR #31 \n"
"\trsbne %2,%2,#0 \n"
:"=r"(dead1),"=r"(dead2),"=r"(res),
"=r"(dead3),"=r"(dead4),"=r"(dead5)
:"0"(a),"1"(b),"2"(分辨率)
:"cc"
);
返回分辨率;
}

我在每个ASM块的第一行收到以 ':'符号( 冒号)开头的错误。

错误为“#18 Expected a”),  必须强调括号的数量是平衡的。

编译器似乎对代码本身很好,但对代码下面的方向却不好。

有人能提供建议。

此致

Nitzan Tzifroni   

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

    TI ARM编译器不支持该形式的ASM语句。  GCC ARM编译器可以。

    谢谢,此致,

    -George

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

    您好,

    您是否可以指出的一些指导原则,如何基于此代码编写ARM编译器支持的等效代码。

    我相信大多数更改都在 C代码和汇编程序代码之间的接口中。

    此致

    Nitzan

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

    Nitzan Tzifroni 说:
    您是否可以向我指出,如何根据此代码编写ARM编译器支持的等效代码。

    我可以说一些。  但我无法解释一切。

    这些例行程序应在手动编码的组装中实施。  说明将相同。  所有%N操作数必须替换为实际操作数,通常是寄存器。 我认为您应该从C调用这些例程 。要了解这些详细信息,请参阅 ARM编译器手册中标题为接口C和C++与汇编语言一节。  这里有一些简单的示例可帮助您入门。  您将看到这些示例通过类似于指令的操作为汇编程序提供了具体的细节,但总是以'.'开头。 (点)。  示例包括.global和.bss。 这些指令称为指令, 在臂装配工具手册中有详细说明

    谢谢,此致,

    -George