2011-06-15 22 views
14

Mono LLVM ile çalışıyorum (http://www.mono-project.com/Mono:Runtime:Documentation:LLVM) ve LLVM'yi burada JIT olarak kullanıyorlar gibi değil. Gerçekten bir kod üreticisi olarak. Ancak dokümanlar göre, bunlar, doğal kod oluşturmadan LLVM-IR geçmesi: ilk olarak, normal bir mono- tam zamanında İR Mono LLVM ve LLVM-IR

  • IR SSA formuna dönüştürülmüştür IL kodu oluşturulur

    1. İR herhangi bir yolu var bu 3 faz yakalamak ve benim LLVM arka uç beslemek için IR kullanmak olmadığını merak ediyorum,

    Yani yerli koduna LLVM IR LLVM tarafından derlenen LLVM IR

  • dönüştürülür. Bu, C# LLVM-IR ön ucunu ücretsiz olarak almamı sağlar.

    Yardımlarınız için teşekkürler!

  • +2

    Bu bağlamda 'IR' ne anlama geliyor? Ayrıca küçük bir nit: JITting muhtemelen bir kod oluşturma biçimi olarak kabul edilebilir (asm kodu afterall). –

    +0

    IR 'ara temsil' anlamına gelir, LLVM'nin derleme dili –

    +0

    ilginç soru btw ... –

    cevap

    4

    Mono'nun LLVM desteği, uygun $libdir, örneğin libmono-llvm.so yüklenmeye çalışarak çalışır. OS0 /usr/bin/mono üzerinde /Library/Frameworks/Mono.framework/Libraries/libmono-llvm.dylib yüklenir. mono/mini/mini-llvm.h, özellikle mono_llvm_load() ve try_llvm_load() numaralı LLVM yükleme kodlarına bakın.

    Bu nedenle, LLVM arka ucunuzu mono-llvm olarak adlandırırsanız, mono'yi mono --llvm olarak başlattığınızda kullanılacaktır. mono_llvm_load(), mono_llvm_init ve mono_llvm_cleanup gibi mono-llvm kitaplığından belirli bir ihracata gereksinim duyduğunu belirtti, bu yüzden Mono'nun kullanmasına izin vermek için LLVM arka ucunuza bazı ek işlere ihtiyaç duyulacağından eminim. Bunu nerede bulacağınıza emin olun (Mono'nun kaynaklarında "LLVM" için grep ping dışında ...). Bu aynı zamanda LLVM arka ucunun önceden oluşturulmuş bir monodan tekrar kullanılamayabileceği anlamına da gelir; Yani, bir prebuild mono, takılmayabilecek bir mono-llvm arka uç sağlayacağından LLVM arka ucunuzu kullanmak için kendi mono'nizi oluşturmanız gerekebilir. (LLVM arka ucunun ne kadar takılabilir veya takılabilir olduğu hakkında hiçbir fikrim yok.)