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.

[参考译文] TMS320C5505:BSAR 指令的 TMS320C5x 编码

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1637924/tms320c5505-tms320c5x-encoding-of-the-bsar-instruction

部件号: TMS320C5505

我正在调试只包含汇编代码的 TMS320C5X 处理器。 我要求澄清香港特别行政区的指示是如何执行的。 手册指出:

累加器 (ACC) 的内容是在单周期内从右桶算术移位 1 至 16 位、由移位代码定义。 如果 SXM 位清零、ACC 的高位为零填充;如果设置了 SXM 位、则 ACC 的高位进行符号扩展。  

移位值的编码仅包含 4 位。 因此、可用 4 位表示的最大可能值为 0xF 或 15。 如何实现 16 位移位?  移位编码为 0 时会发生什么情况?  移位编码为 0 的 BSAR 是否可能转换为 16?

非常感谢在这方面提供的任何帮助。

 cfda555d-0d30-4d2d-ba41-6dc72f506123.png

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

    您好、Eric、

    C55x 是 16 位 DSP、因此如果是循环移位(左或右)、移位 16 与移位 0 相同。 如果不是循环移位、则该位将等于 0。

    此致、

    Ming  

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

    尊敬的 Ming:

    感谢您的反馈。 很抱歉、我想在帖子中澄清一下。 我所研究的是 TMS320C5x 架构、而不是 TMS320C55x  架构。 我知道这是一个古老的 体系结构 ,没有一个选项在表单中选择它。  

    在手册中、它有一个 BSAR 16 示例、其中显示了 16 位的移位。

     

    我想了解如何在 4 位字段中对值 16 进行编码。 在我的程序中、我可以识别 BSAR 操作码 101111111110 0000、其中移位字段显示为全零。 这表明全零移位代码可能对应于 16 位移位。 或者、编码的移位值可以被偏移(例如,递增 1)、从而允许 4 位字段表示从 1 位到 16 位的移位。

    或者、 TMS320C5x 架构是否仍然存在编译器? 如果是、我可以插入此示例、查看生成了哪些操作码。 我能够找到 TMS320C55x 编译器的下载内容、但该架构没有 BSAR 指令。  

    谢谢您、

    Eric

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

    尊敬的 Naveen:

    根据以下比较:

    C5x 也是 16 位 DSP、因此循环移位 16 位与 0 相同、而非循环移位 16 位等于 0。

    此致、

    Ming

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

    感谢 Ming 的帮助。 我真的很感激。

    我设法找到一个能够组装 TMS320C5x 程序集的旧汇编器 (DSK5A.EXE)。 似乎这个.exe 无法处理 BSAR 16 指令,但我能够看到如何将其他 BSAR 值转换为操作码。 汇编指令编码为比操作码中的 4 位移位值多 1。 查看随附的图像、我们可以看到 BSAR 1 转换为 bfe0、其中 0 是 4 位移位值。 这也适用于另一个值。