我发布了 this Q to TI's 28xx DSP forum 但还没有收到回复,我想这里可能有人知道。

我知道如何在汇编中编写函数,以便它们可以被 C 调用;如果 C 可调用名称为 foo() ,则汇编函数名为 _foo()

如果我想在汇编中使用 C++ 并优化类方法怎么办?我怎么做?我认为唯一的主要问题是:

  • 命名
  • 访问“this”指针
  • 通过以某种方式知道偏移量来访问类成员

  • 如果我不想担心最后两个,那么也许我会编写一个静态成员函数并执行以下操作:
    class MyClass
    {
      int x;
      static int _doSomething(int u); // implement this in assembly
    public:
      inline void doSomething() { x = _doSomething(x); }
      // lightweight C++ wrapper to handle the class member / "this" pointer stuff
    };
    

    最佳答案

    this 指针作为附加参数传递给函数,使用平台上的标准调用约定。在我熟悉的所有平台上,它都作为第一个参数传递,但我没有做很多 C++ 编码,所以我不确定标准是否能保证这一点。您可以随时在您的平台上反汇编一些 C++ 代码以进行确认。

    C++ 符号命名比在 C 中更痛苦,并且因编译器而异。我想您可以通过反汇编编译的函数定义来找出要使用的正确符号名称,只需确保:该函数是正确类的成员,并且具有正确数量和类型的参数。

    除非你真的需要在原地重现一个 C++ 函数,否则我可能只会制作一个标准的 C 函数并在它的声明周围执行通常的 extern "C" { ... }

    关于c++ - TI DSP : interfacing C++ and assembly,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2042416/

    10-08 21:11