我有一个将数组作为参数的函数,我需要在函数中首先获取数组的大小。我需要在 LLVM IR 中执行此操作。这可能吗?我可以访问数组,但我不知道大小。
void test(int[] a) {
}
Run Code Online (Sandbox Code Playgroud)
现在正在翻译为
define void @test(i32* %__p__a) {
entry:
%a = alloca i32*, align 4
store i32* %__p__a , i32** %a, align 4
ret void
}
Run Code Online (Sandbox Code Playgroud)
我需要在函数中首先获取数组的大小。我需要在 LLVM IR 中执行此操作。这可能吗?
如果你所拥有的只是一个i32*没有关于它指向什么的附加信息,那么不,这是不可能的。为了获得数组的大小,您需要将该信息存储在test函数可以访问它的地方。
由于这是您自己的语言,并且您可以控制生成的 LLVM IR 的外观,例如,您可以将数组表示为包含数组大小和指向数据的指针的结构。
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |