Dizisel bildirimleri algılamaya çalışıyorum ve statik boyutlu diziler için bir sembol değeri tablosu oluşturmaya çalışıyorum. Bir ad-arraySize eşleştirmesi içerecektir. Birkaç sorum var:LLVM Değişken adları ve parametreleri
1)% a = alloca [200 x i8] gibi bir komut verildiğinde, hizala, dizinin adı olan "a" ı nasıl ayıklayabilirim.
2) dizi boyutu ancak bu kodu olarak "200" ayıklamak için çalışıyorum:
if(AllocaInst *allocInst = dyn_cast<AllocaInst>(&*I)){
PointerType *p = allocInst->getType();
if(p->getElementType()->isArrayTy()){
Value* v = allocInst->getOperand(0);
errs() << *v ;
}
}
bana "i32 1" verir ben yazdırırken bu yüzden v bilen var mı.? Bunun dışında 32bit bir şey olduğunu düşünemedim.
Tamam, bu nedenle boyutu nasıl alacağımı anladım: ArrayType * a = cast (p-> getElementType()); a-> getNumElements() –
Realn0whereman
... tamam yani ... ben de adını almak nasıl anladım ... allocInst-> getName() Neden sadece stackoverflow gönderme beni yanıtları daha hızlı bulmanıza yardımcı olduğunu ...: P – Realn0whereman
Sadece bu bilgiyi içeren bir yanıt gönderirseniz yorum yapmak yerine, en iyisi budur. Bu şekilde soru, cevaplandığı gibi uygun şekilde işaretlenecektir. – Oak