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.

[参考译文] TDA3XEVM:在内核 C 中为 VCOP 编写条件循环。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/664529/tda3xevm-writing-conditional-loops-in-kernel-c-for-vcop

器件型号:TDA3XEVM

您好!

我在使用 BAM 框架将用 C 编写的一些算法移植到内核 C 时遇到问题。 我仅使用 EVE 的编程人员指南(版本 E)、目前我想跳过循环中的一些迭代、但我不知道如何操作。 用 C 编写的一些示例如下:

for (i1=0;i1 <blkHeight;i1++)

for (i2=0;<blkWidth; i2++)

如果(blkHeight=0)

中断;

/*循环代码*/

如何在内核 C 中实现相同的功能?

此外、我看到条件移动不能与加载或存储一起使用、也不能与超过1条指令一起使用。 对于指令块、是否有任何使用方法?

此致、

Theodore

 

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

    我已将您的问题转交给 EVE 专家。

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

    您好、Theodore、

      VCOP 不允许在 vloops 中具有零环路计数。 在您的情况下、您应该通过 ARP32处理它。 基本上、如果 blkHeight 为零、则 ARP32不应将循环提交到 VCOP。

    此致、

    安州

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

    很抱歉、我错误地回答了这个问题。 条件应为:

    如果(i1==0)
    中断;

    但也可以用其他值替换0。

    很抱歉造成混淆。

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

    您好、Theodore、

      我假设您需要某种早期退出机制。 VCOP 的确支持提前退出机制。 您可以执行如下环路中所示的操作。

    for (int i3=0;i3 < 1;i3++)

     for (int i4=0;i4<1;i4++)
     {
      _vector V1 = 4;
      _vector V2 = 4;
      _vector V3 = V1 = V2;
      如果(V3[0])转至 END_LOCK1;
      (笑声)
      }

    end_loop1:;

      您可以在 SPRUHB9B.pdf (1.14节)文档中阅读详细信息、该文档是 ARP32编译器的一部分。

    此致、

    安州