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.

[参考译文] MSP430F5244:内在函数的编译器转换

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1006444/msp430f5244-compiler-conversion-of-intrinsic-functions

器件型号:MSP430F5244

大家好、MSP430支持团队

我将向您提出"相关问题"中的问题。

上一次、Dennis 先生告诉我、如果您想向 SR 写入一个值、则需要使用 BIS 指令来编写该值。

我对此有疑问。

下表是编译器指南的屏幕截图。

上述情况表明、如果我使用内在函数的__bis_SR_register()、 编译器将转换为 BIS。

但是、我检查了它、它也转换 了 BISx。

这是编译器错误吗?

如果不是编译器错误、请告诉我编译器的 BIS 和 BISx 的转换规则。

以下是 转换为 BISx 指令的源代码和屏幕截图。

 

e2e.ti.com/.../1325.main.c

此致、

科基

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

    您好、Koki、

    BISx.w 用于将在目的字中源字内置1的位置1。

    在您的示例中、我不知道 Set_LPM_Mode (Set_LP_mode[count])是如何工作的。  是否可以尝试用_BIS_SR (LPM3_BITS + GIE)替换它;以查看任何差异?

    谢谢、

    Lixin

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

    你好、Lixin

    [引用 userid="125558" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1006444/msp430f5244-compiler-conversion-of-intrinsic-functions/3719378 #3719378"]_BIS_SR (LPM3_BITS + GIE)

    使用上述写入方法、已确认 BIS.W 被写入 SR。

    当我的客户的描述方法写入 SR 时、这是一个转换为 BISx 的编译器错误吗?

     谢谢、

    科基

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

    BISx 的使用由源的已索引寻址模式触发。

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

    您好!  

    [引用 userid="215629" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1006444/msp430f5244-compiler-conversion-of-intrinsic-functions/3720445 #3720445"]源的索引寻址模式触发 BISx 的使用。

    在这种情况下、它是通过数组调用 LPM 设置位引起的、不是吗?

    此外、文档是否说明已索引地址模式是转换为 BISx 的因素?

    谢谢、

    科基

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

    BISx 使用20个地址位(BIS 使用16)、您显然已经使用告知编译器使用20位地址的设置进行编译。

    编译器不知道您的索引变量的范围、因此必须假定最差。

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

    您好!

    [引用 userid="215629" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1006444/msp430f5244-compiler-conversion-of-intrinsic-functions/3727111 #3727111"]

    您显然已经使用告诉编译器使用20位地址的设置进行编译。

    编译器不知道您的索引变量的范围、因此必须假定最差。

    [/报价]

    很抱歉、我不明白您的说法。 您的 C 语言描述是什么意思?

    您能给我更详细一点吗?