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.

[参考译文] CCS/TMS320VC5402:从浮点转换为短点

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/586525/ccs-tms320vc5402-cast-from-float-to-short

部件号:TMS320VC5402

工具/软件:Code Composer Studio

最初针对 不同DSP发布错误

我正在尝试阐明在输出数据超过+/-3.2767万时从浮点转换为短整数的行为。

我可以看到编译器正在调用函数F$FTOI ,然后调用SSBX SXM  

我找不到关于这两 种功能的文档。

  

似乎超过短整数范围的数据可能会被剪切,如果我确信它将始终发生,这将是非常好的。

原始C代码等效于....

函数doit (const浮点值)

短输出

OUTPUT =(短)(值* 3.2768万.0F);  

有什么想法吗?

Glen Wardrop

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

    [报价用户="Glen Wardrop "]

    我可以看到编译器正在调用函数F$FTOI ,然后调用SSBX SXM  

    我找不到关于这两 种功能的文档。

    [/引述]

    编译器调用F$FTOI函数以将32位浮点转换为16位整数(或短整数)。  此函数的源代码位于编译器软件包f_ftoi.asm文件中。  该文件位于zip文件compiler_install_root/lib/rtssrc.zip中。  

    指令SSBX SXM在状态寄存器中设置符号扩展模式位。  更多详细信息可在 C54x助记符指令集手册中找到。

    Glen Wardrop said:
    似乎超过短整数范围的数据可能会被截取,如果我确信它将始终发生,这将非常好。[/QUOT]

    是的。  f_ftoi.asm中的注释也是如此。  

    Glen Wardrop said:
    原始C代码等效于....[/QUOT]

    为了进行编译,我将您的C代码更改为...

    短道(常量浮点值)
    {
    返回(短)(值* 3.2768万.0F);
    }
    

    当我编译此代码时,我没有获得SSBX指令。  我怀疑这与这个问题有关。  但我想无论如何我会指出这一点。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢-这是一个好消息-非常有帮助
    此致
    格伦