我有一个程序从堆栈中分配内存,如下所示:
%x = alloca i32, align 4
在我的传递中,我想获得在运行时指向此分配内存的实际内存指针。这应该是%x。如何在通行证中获得指针?
Instruction* I;
if (AllocaInst* AI = dyn_cast<AllocaInst>(I)) {
//How to get %x?
}
答案 0 :(得分:4)
您可以使用指令*作为值*(并且指令继承自值),然后您正在处理该指令的结果/返回值。我已经调整了LLVM Pass中的一些代码,以演示使用alloca分配空间然后存储到该位置。请注意,指令的结果可以直接传递给其他指令,因为它们是值。
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
int course, numberOfClasses; //declare variables
double gradePointTotal = 0, gradePointAve; //initialize to 0
string grade;
cout << "GPA Calculator \n";
cout << "\n Enter the number of classes ";
cin >> numberOfClasses; // enter number of classes
for (course = 1; course <= numberOfClasses; course++ ) // define loop
{
cout << "\n Enter a letter grade for class number " << course << ": ";
cin >> grade; //Enter grade
if ( grade == "A" || grade == "a") //accepts upper and lower case
gradePointTotal = gradePointTotal + 4;
else if ( grade == "B" || grade == "b")
gradePointTotal = gradePointTotal + 3;
else if ( grade == "C" || grade == "c")
gradePointTotal = gradePointTotal + 2;
else if ( grade == "D" || grade == "d")
gradePointTotal = gradePointTotal + 1;
else if ( grade == "F" || grade == "f")
gradePointTotal = gradePointTotal + 0;
gradePointAve = gradePointTotal / numberOfClasses; // calculate the GPA
cout << "\n Your GPA is: " << gradePointAve << endl; // display GPA
}
}
答案 1 :(得分:0)
如果您想存储或加载到%x,您只需使用商店或盖子说明
如果需要指针的数值,请使用ptrtoint指令。