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.

[参考译文] 编译器/MSP430F5529:无法找到htobe32()函数...

Guru**** 2577385 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/598162/compiler-msp430f5529-i-couldn-t-find-a-htobe32-function

部件号:MSP430F5529

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

或者类似的功能,所以我写了自己的。

它是否确实存在,我只是错过了它的发现?

这是我第一次学习MSP430 ASM。 我确信有些事情我做得不正确,但我不知道我不知道什么。 是否有任何改进守则的建议?

...标准

/*
汇编级实用程序
*
**/

extern unsigned long __swap_long (unsigned long x); 
;
;汇编级实用程序
;

.global __swap_long

__swap_long:
swpb R12
swpb R13
XOR.W R12,R13
XOR.W R13,R12
XOR.W R12,R13
Reta 

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

    我还没有机会尝试。  但它通过了基本检查。  我没有发现任何问题。

    谢谢,此致,

    -George

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

    还有一件事... 对于16位值,有一个名为__swap_bytes的内在。  请在 MSP430编译器手册中阅读有关它的详细信息

    谢谢,此致,

    -George

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

    您好,George,

    我知道__swap_bytes()(输出SWPB :-))

    感谢代码审核。 它看起来很简单,肯定有问题,所以我很紧张。 但它是有效的。

    ...标准

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

    mspgcc在endian.h中包含了此函数,但当TI接管MSP430 GCC编译器时,它们没有包含此标头。 它使用<bits/byteswap.h>中描述的函数,这些函数也无法在转换过程中继续运行。 mspgcc中使用的代码是:

    第节.文本
    .global __bswap_32
    __bswap_32:
    swpb r14
    swpb R15
    MOV.w R15,R13
    MOV.w r14,r15
    MOV.w R13,r14
    XRET
    

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

    谢谢!

    我检查了循环长度,MOV和XOR是相同的,所以我的版本是相同的。 总是很高兴得到确认。

    ...标准