Scala oluşturma bayt kodunun nasıl olduğunu merak ediyorum, ASM gibi bazı kütüphaneleri kullanıyor mu? Ya da sadece performans için .class dosyalarını ikili yazınız? el ile java bayt veya .net MSIL dönüştürerek sonra bazı ara kod üreten ve konum gibiScala oluşturma bayt kodu nasıl? ASM gibi bazı kütüphaneleri kullanarak veya doğrudan ikili yazabilir misiniz?
cevap
ASM 4 kullanmaktadır JVM-1.5, -hedef: -hedef destekleyen bayt kodu yaymak üzere JVM-1.6 ve -hedef:
-
: arka uç JVM-1,7
- Yayan Scala, bir önceki aşamada tarafından inşa ASM http://lamp.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/2012Q2/GenASM.pdf
uygulama yönleri tarif edilmektedir
baytkodu yayıcı (GenASM, aşağıda bağlantısı kaynak) Denetim Akış Grafiği (CFG) ziyaret yoluyla classfiles ve doğrudan classfiles yayacak şekilde Akış ASM API kullanır: şeyler şimdi nasıl çalıştığını bulunuyor
https://github.com/scala/scala/blob/master/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala
. Deneysel olasılıklar alanında, CFG'yi atlamayı ve Scala Özet Sözdizimi Ağaçlarını doğrudan ziyaret ettiğinden (daha sonra bellekte sınıf dosyaları oluşturmak için Ağaç ASM API'sini kullanarak) daha hızlı yayılan deneysel bir bayt kodu üzerinde çalışıyorum. Ayrıntılar:
görünüyor
burada derleyici Güzel bakış: https://wiki.scala-lang.org/display/SIW/Overview+of+Compiler+Phases 2.10 Scala derleyici ile başlayarak
- 1. InnoIDE kullanarak AppData dizinine yazabilir misiniz?
- 2. Scala kütüphaneleri ve çerçeveleri
- 3. Monitör Nesnesi Oluşturma Java'da ASM kullanarak
- 4. ASM Bytecode çerçevesini kullanarak yakalama blok kodu nasıl değiştirilir?
- 5. 'Merhaba, Dünya!' Oluşturma Java ASM kütüphanesiyle sınıf
- 6. Scala oluşturulmuş bayt kodu, kontrol edilen istisnayı nasıl azaltır?
- 7. Ben mesela ikili sahip ikili bayt uzunluğu
- 8. Avro JSON şema dosyalarına yorum yazabilir misiniz?
- 9. Java bayt dizisini Scala bayt dizisine nasıl dönüştürebilirim?
- 10. Bir ikili ikili düzenleyiciden ağ bayt sırasını nasıl dönüştürebilirim?
- 11. Asm, asm volatile ve clobbering belleği arasındaki fark
- 12. İkili verinin bayt sırası nasıl değiştirilir
- 13. Bir bağlantı noktasına 301 yönlendirmesi yazabilir misiniz?
- 14. İki başlık çizgisine sahip csv yazabilir misiniz?
- 15. JVM bayt kodu açıklaması
- 16. Bir monogame projesinden ikili oluşturma nasıl olur
- 17. İkili dizgiyi bayt dizisine dönüştürme
- 18. Baytları Qt kullanarak ses çıkışına yazabilir miyim?
- 19. Python 3 Bayt dizisi oluşturma
- 20. Doğrudan Git Akış'ta şube geliştirmek ister misiniz?
- 21. nasıl gibi benim ön uç kodu için bazı şablonları
- 22. Yerel Internet Explorer sürümünüzü kontrol etmek için Java kodu yazabilir misiniz?
- 23. T4 ad alanı doğrudan alan veya yöntem gibi içeremez.
- 24. Java'da dizeleri içeren dosyadan bayt kodu nasıl çözülür?
- 25. beklenen '=', ',', ';', 'asm' veya '__attribute__' önce '.' belirteç
- 26. URLConnection kullanarak ikili dosyayı yükleme
- 27. Tek bir Adlandırılmış Boru istemcisi okuyabilir ve yazabilir misiniz?
- 28. Oluşturma Kodu 128 Excel VBA kullanarak barkodlar
- 29. Firebird'den ikili blob C# ile bayt [] nasıl okunur?
- 30. Scala: JSON'u bir sınıf sınıfına doğrudan ayrıştırın
Ne scala 2.10 önce? – Freewind
2.10'dan önce "GenJVM" kullanımdaydı. Şimdiye kadar EOL'd olmuştur. GenJVM, kendi bünyesinde geliştirilen bir bytecode-manipulation kütüphanesi kullandı (örneğin JDK6 yığın harita çerçevelerine yetişemedi). –
Bu sorunun cevabını verdim, ama sadece cevabınız yüzünden. Harika bilgi! – Andy