gpt4 book ai didi

C++ LLVM 类功能

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:22 25 4
gpt4 key购买 nike

我在玩 LLVM,但现在我被困在为类生成代码。

如何使用 LLVM 创建类功能?

  • 类运算符是否像处理函数一样处理?
  • 如何处理自动分配(如 C++)?
  • 如何通过像 C++ 这样的虚拟继承来支持像 Java 那样的接口(interface)?

最佳答案

长版

一般类行为

一种直接的方法是创建结构,然后将方法建模为常规函数,这些函数接收指向表示包含类的结构的指针——本质上是一个 this 指针——作为第一个参数。可以通过分配结构然后调用特殊的初始化函数(实际上是构造函数)对分配的数据来对分配进行建模。

继承可以通过构建一个结构来完成,该结构包含一个特殊的“父”字段(或多个字段,用于多重继承),其类型与基类的结构类型相同。

多态性

阅读虚拟表;我认为它们是最好的起点。你会发现编译器基本上:

  1. 在内存中创建一个静态表,从函数“名称”映射到它的实现,
  2. 添加指向此类表的类结构的指针,
  3. 每当调用虚拟方法时,将其编译为间接调用,从适当的虚拟表条目中取消引用地址。

精简版

在 C++ 中编写一些使用类的代码,然后使用 Clang 将其编译为 LLVM IR 并查看生成的代码。

关于C++ LLVM 类功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307906/

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