gpt4 book ai didi

c++ - 德州仪器数字信号处理器 : interfacing C++ and assembly

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:59 24 4
gpt4 key购买 nike

我发布了 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++ - 德州仪器数字信号处理器 : interfacing C++ and assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2042416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com