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.

[参考译文] MSP432E401Y:乘法和累加汇编

Guru**** 2522770 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1259951/msp432e401y-multiply-and-accumulate-assembly

器件型号:MSP432E401Y

您好!

我需要帮助将此示例转换为可与 MSP432E4 SDK 和 CCS 12.4.0配合使用的示例。

#define MULADDC_INIT                            \
    asm(

#define MULADDC_CORE                            \
            "ldr    r0, [%0], #4        \n\t"   \
            "ldr    r1, [%1]            \n\t"   \
            "umaal  r1, %2, %3, r0      \n\t"   \
            "str    r1, [%1], #4        \n\t"

#define MULADDC_STOP                            \
         : "=r" (s),  "=r" (d), "=r" (c)        \
         : "r" (b), "0" (s), "1" (d), "2" (c)   \
         : "r0", "r1", "memory"                 \
         );

谢谢。

-迈克

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

    尊敬的 Mike:

     如果您引用 umaal (无符号长整数乘法、带可选累加、32位操作数、生成64位 结果)、则这些是 M4内核支持的汇编指令。

    。  这些代码有什么问题?  我不清楚要为 CCS 转换它们的含义。 是否存在编译错误? 如果是、哪一行?  使用这些代码的上下文环境是什么(例如、在 C 文件中或在汇编文件中使用内联汇编)。 如果您遇到编译器/链接器问题、我会将您的帖子转给我们的编译器专家。

     我不知道你的行11-13在做什么。 它们对我来说不像汇编代码、但我必须说、我不是一名 Arm 汇编语言专家。  

     如果您要将内联汇编代码插入 C 代码、请参阅 TI Arm 编译器用户指南的第5.10和6.6.5节。  https://www.ti.com/lit/pdf/spnu151。 但是、您需要非常小心 、不要使用 asm 语句破坏 C/C++环境。 编译器不会检查插入的指令。 它很容易导致在插入的代码中或其周围操作的变量产生不可预测的结果。 我建议您将汇编文件放在一个单独的 asm 文件中。 我不知道这些汇编代码的用途是什么。 我希望用户指南能帮助您完成所需装配体的操作。  

     此处是 TI Arm 汇编器用户指南。  https://www.ti.com/lit/pdf/spnu151

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

    尊敬的 Charles:

    我从 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\source\third_party\mbedtls\include\mbedtls\bn_mul.h 中挑选了代码。

    #Elif (__arm_arch >= 6)&&
    已定义(__ARM_FEATURE_DSP)&&(__ARM_FEATURE_DSP == 1)

    我想为 MSP432添加一个部分。

    此致、

    -迈克

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

    编译错误为:

    ".../../../../library/bignum.c "、第1456行:错误#18:预计为")"

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

    尊敬的 Mike:

     感谢您的澄清。 我不熟悉这个第三方 mbedtls 代码、特别是在汇编级别。 您能否创建一个仍然可以重现编译器错误的小型(尽可能小) CCS 工程、我会将该工程移至我们的编译器专家以获取帮助。  

     我认为 _arm_arch 和 _arm_feature_dsp 是 TI Arm 编译器支持的预定义宏。 Cortex-M4应该是版本7、因此我认为从宏的角度来看、这些宏是有效的。  

     您是否尝试了不同的优化级别、它们都产生相同的编译错误?

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

    来自 Arm 的 add()示例具有相同的编译错误:

    https://developer.arm.com/documentation/100748/0620/Using-Assembly-and-Intrinsics-in-C-or-C---Code/Writing-inline-assembly-code

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

    尊敬的 Mike:

     我可以使用链接中的代码重现错误。 我将把这篇帖子转发给我们的编译器专家。  

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

    似乎正在使用 TI 专有 Arm 编译器。  遗憾的是、此编译器不支持 GCC 样式 ASM 如第一篇文章中所示的语句。  可能可以从固有噪声的角度重新实现 乳白色 。  请在 TI ARM 编译器手册中搜索它

    谢谢。此致、

    -乔治

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

    您好、George、

    编译错误在 #define MULADDC_STOP 之后开始。  我对任一编译器的汇编都不熟悉。  您能为我们移植这些代码吗?  我们不胜感激。

    此致、

    -迈克

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

    了解如何使用这些宏、以及如何将 GCC 样式的 ASM 语句的作用。  不幸的是,我缺乏这方面的知识。

    谢谢。此致、

    -乔治