C++ C++;LLVM类功能
我在玩LLVM,但现在我被困在为类生成代码 如何使用LLVM创建类功能C++ C++;LLVM类功能,c++,class,llvm,C++,Class,Llvm,我在玩LLVM,但现在我被困在为类生成代码 如何使用LLVM创建类功能 类运算符是否与函数一样处理 如何处理自动分配(如C++) 如何通过java等虚拟继承支持C++接口? 长版本 一般班级行为 一种简单的方法是创建结构,然后将方法建模为常规函数,这些函数接收指向表示包含类的结构的指针(本质上是thispointer),作为第一个参数。可以通过分配结构,然后对分配的数据调用一个特殊的初始化函数(实际上是构造函数)来对分配进行建模 继承可以通过构建一个结构来完成,该结构包含一个特殊的“父”字段(
- 类运算符是否与函数一样处理
- 如何处理自动分配(如C++) 如何通过java等虚拟继承支持C++接口?
this
pointer),作为第一个参数。可以通过分配结构,然后对分配的数据调用一个特殊的初始化函数(实际上是构造函数)来对分配进行建模
继承可以通过构建一个结构来完成,该结构包含一个特殊的“父”字段(或多个字段,用于多重继承),其类型与基类的结构类型相同
多态性
了解虚拟表;我认为这是最好的起点。您可以发现编译器基本上:
< >编写C++中使用类的代码,然后用Clang编译成LLVM IR,并查看生成的代码。你是在手工编写中间形式的LLVM字节码,还是什么?好吧,我不认为它是以这种方式使用的,也许除了一些关键的优化,人们可能也会这样写。对于类的高级,使用适当的前端,最明显的是代码> CLAN++/COD>,用C++编写类。我编写的编程语言接近于非常简化的java。因此,我需要手工编写类功能,将其连接到我的解析器。您需要将类解压缩到更低级的东西。你曾经用C写过OO代码吗?它非常麻烦,但很有效,让您了解如何在编译器中实现类那么,这个问题实际上与LLVM没有多大关系。尽管事实上,我认为LLVM确实具有优化典型类实现中出现的特定模式的功能,因此标记可能仍然是相关的。不过我对此一无所知。谢谢,我会调查的!谢谢你,这正是我所需要的!