【发布时间】:2014-05-19 02:42:08
【问题描述】:
我生成了以下位码。 fuelTank 是一个数组,我将它传递给一个名为 getEngineValue(int x[]) 的函数。
%fuelTank = alloca [5 x i32], align 4
call void @llvm.dbg.declare(metadata !{[5 x i32]* %fuelTank}, metadata !39), !dbg !40
%0 = bitcast [5 x i32]* %fuelTank to i8*, !dbg !40
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %0, i8* bitcast ([5 x i32]* @_ZZ12checkFuelSysvE8fuelTank to i8*), i32 20, i32 4, i1 false), !dbg !40
call void @_Z17getFuelIndicationPi(i32* getelementptr inbounds ([5 x i32]* @piston, i32 0, i32 0)), !dbg !41
%arraydecay = getelementptr inbounds [5 x i32]* %fuelTank, i32 0, i32 0, !dbg !42
call void @_Z14getEngineValuePi(i32* %arraydecay), !dbg !42
ret void, !dbg !43
我想读取存储在fuelTank 数组中的值。我想我可以从alloca 指令中读取它,但找不到任何成功。
注意:我知道如何使用@llvm.memcpy 访问数组,但我不想要这个。
【问题讨论】:
-
“我想读取存储在fuelTank数组中的值”——你想在哪里读取它们?在您提供的代码中?在
getEngineValue里面?其他地方? -
@Oak:在我提供的代码中。