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.

[参考译文] TMS320F2800157:使用 TMU 的整数除法

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1313965/tms320f2800157-integer-division-using-tmu

器件型号:TMS320F2800157

大家好、

========================================

sTmpUint32_3 = sTmpUint32_1 / sTmpUint32_2;  --将两个整数除


0849e8:A306 MOVL P、@0x6
0849e9:0200 MOVB ACC、#0
0849ea:F61F RPT #31
0849eb:56170008 || SUBCUL ACC,@0x8   -- 未使用 TMU。 实际测量表明、此除法需要很多 CPU 周期。
0849ed:A90A MOVL @0xA、P

========================================

sTmpFloat32_3 = sTmpFloat32_1 / sTmpFloat32_2;  -- 将两个浮点数相除

084a60:E2AF0100 MOV32 R1H、@0x0、UNFF
084a62:E2AF0002 MOV32 R0H、@0x2、UNFF
084a64: E2740008 DIVF32 R0H、R1H、R0H   -- 使用 TMU 指令。 实际测量结果表明、此除法所需的 CPU 周期更少。
084a66:7700 NOP
084a67:7700 NOP
084a68:7700 NOP
084a69:7700 NOP
084a6a:E2030004 MOV32 @0x4、R0H


如何将整数除法也编译为 TMU 指令?

--

谢谢、此致

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

    耶鲁大学  

    TMU 仅支持浮点运算。

    FINTDIV (快速整数除法)硬件会进行整数除法。 但是、F280015x 上不存在该接口。 您可以尝试将整数转换为浮点值、执行除法、然后转换回整数。 编译器可以利用高效的转换指令(F32TOI32、I32TOF32)进行转换运算、并利用 TMU 进行除法运算。

    谢谢。

    Sira