2012-05-30 34 views
6

içinde size_t bir eşdeğer Malloc strlen gibi bazı sistem kütüphaneleri parametre olarak parametre veya istiyorum.Orada llvm

  • LLVM IR'de bu işlevlerle etkileşime girmek için doğru seçim nedir?
  • Seçim, derleyicinin görevi mi?
  • LLVM IR'nin size_t tipi var mı?

cevap

9

LLVM düzeyinde, size_t mevcut değil. Yerel bir türe göre yazılan geliştiricinin yararı için bir yapıdır. Yerel türler, hedef mimari için sabit bir boyuta sahiptir ve derleyici, LLVM bit kodunda bunları nasıl temsil eder. X86 üzerinde, size_t, ön uç tarafından imzasız uzun olarak görüntülenebilir, bu da daha sonra LLVM'ye i32 olarak yazar (LLVM derlemesi imzasız bir türe sahip olmadığı için).

+0

Yani derleyicinin görevi, oluşturduğu mimariyi tanımak için mi? – waynix

+0

@waynix, Evet, elbette. C/C++ ile etkileşime girmeniz gerekiyorsa, derlediğiniz hedefi bilmelisiniz - bu diller hedef-nötr değildir. –

-2

llvm içinde size_t kullanabilirsiniz, normal olarak kullanılacak geçerli bir türüdür.

+0

llvm assembler'ın kendisi, size_t bilgisini bilmez. – waynix

+0

Clang'e (C derleyicisi) başvurabilirsiniz. @waynix, LLVM'de böyle bir tip olmadığından doğrudur. – mgiuca