gpt4 book ai didi

java - LLVM 中类型的大小

转载 作者:行者123 更新时间:2023-12-01 11:36:04 27 4
gpt4 key购买 nike

我们目前正在用 Java 构建一个编译器,它使用 LLVM 作为中间代码表示。我们使用多种类型,并且需要为它们分配内存,例如使用 malloc。

我想知道如何计算内存中元素所需的大小:指针、结构......

我知道如果我们使用LLVM API,我们就可以使用DataLayout,但不幸的是我们不使用它,而是“手动”生成LLVM代码(主要是因为我们无法找到一个像样且易于使用的Java)捆绑)。

因此,我们试图确定如何计算(复杂)类型的大小,具体取决于编译器将在其上执行的体系结构。

现在,我们只需检查是否处于 64 位架构上,以确定指针的大小(4 或 8 字节)。我们通过简单地添加结构元素的大小来猜测结构的大小,但似乎这是不正确的(我猜应该考虑对齐)。

你能帮我找到解决这个问题的方法吗?

谢谢!

最佳答案

我完成此操作的一种方法是创建一个指向您要调整大小的类型的指针。然后使用 getelementpointer 获取指向元素 1 和元素 0 的指针。用指向元素 1 的指针减去指向元素 0 的指针,这就是大小。当后端将其降低到填充尺寸时,它应该得到常数折叠并优化为单个常数。

关于java - LLVM 中类型的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29979023/

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