JVM/CLR, JIT'i yerel kod nasıl derler? Bazı kod enjeksiyonları veya kodları yürütülebilir belleğe kopyalamak mı? Dinamik kod yürütülmesine izin veren sistem çağrıları nelerdir?Yerel kod yürütme, JVM/CLR
cevap
Özellikle Java'yı nasıl yaptığını bilmiyorum, ancak genel olarak "tuzak" opcodes'larını yorumlayıcının yönerge akışına ekleyeceksiniz. Bu amaçla özel yapılmış iki opcodes in the JVM spec vardır. http://download.java.net/jdk6/source/
ortak dil çalışma zamanı JIT kod yönetilen ve yerli kod veya bir yerli saplama işaret girişleriyle her tip için bir methodtable vardır:
zaman emin olmak istiyorsanız, kaynağın daha iyi bir yanıt var daha sonra, sadece oluşturulan yerel koda işaretçi ile metodu düzeltin.
MSDN CLR JIT derleyicisi nasıl çalıştığını
This blog entry by Dave Notario açıklar MethodDesc bölümünde ayrıntılı bir explanation bir daha vardır.
CACAO VM'da (JIT-JVM araştırması) nasıl yaptığımızı açıklayabilirim. İlk olarak, bir yöntemin makine kodu, bazı yığın-ayrılmış bellek bloğunda oluşturulur. Derlemeden sonra, son kod uzunluğu bilinir ve mmap
ve PROT_EXEC
bayrağını (ilgili CACAO kodu here) kullanarak bir yürütülebilir bellek parçası ayrılır. Daha sonra makine kodu mmapped alanına kopyalanır. Bundan sonra, birçok mimariye, makineye özgü önbellek temizleme mekanizması gerekir. Örnek olarak, PowerPC 64 için cache-flushing function'a bir göz atın. Özellikle i386 ve x86_64'te yapılacak bir şey yoktur. Bu adımdan sonra, işlemci yeni üretilen kodu yürütmeye hazırdır. Alternatif olarak, önceden ayrılmış bellek sayfaları, mprotect
ile yürütülebilir olarak işaretlenebilir. mmap
/mprotect
un Unix tesisleri olduğunu unutmayın.
- 1. Firefox eklentisi: yerel kod yürütme?
- 2. C# Kod boyutu ve Kod yürütme süresi
- 3. Yürütme uygulamasını yerel olarak dağıtın
- 4. Yerel kod çökmesi libwebviewchromium.so
- 5. Android: MediaRecorder @ Yerel kod
- 6. Yerel C++ kullanarak .NET çağrılarını yürütme
- 7. Kuruluş kodu içinde Java kod bloğunu yürütme
- 8. Ana iş parçacığı üzerinde kod yürütme zorlaması
- 9. TFS İş Öğesi Geçişinde Özel Kod Yürütme
- 10. Yürütme Hatası, kod 1'i org.apache.hadoop.hive.ql.exec.MapRedTask
- 11. Javascript/Node.js ile kod içinde mongoimport yürütme
- 12. , tutulma ayıklayıcı artık yerel kod
- 13. Telefondaki yerel kod nasıl kullanılır?
- 14. Benim Android çizim uygulama yerel kod
- 15. Yerel kod ile Android Kitaplığı'nı oluşturma sorunları
- 16. Corona'yu yerel kod ile genişletebilir miyim?
- 17. Motorola Droid'de Yerel Kod Hata Kodu
- 18. Jquery Tablo yürütme yürütme
- 19. Uzak Linux ana bilgisayarında yerel komut dosyası yürütme
- 20. Yürütme
- 21. "Çalışma" değil dubugger'de kırın .. kod yürütme devam ediyor
- 22. Derleme sırasında C önişlemcisi kod yürütme nasıl yapılır?
- 23. Neden Görev Yürütme sabit hızı programındaki kod çalışmıyor?
- 24. Farklı girdiler altında aynı kod yürütme yollarını karşılaştırın
- 25. Aynı kod bloğu yürütme süresinin farklı nedeni nedir?
- 26. C++ çoklu iş parçacıklı programında seri kod yürütme
- 27. Tek tek yürütülemeyen kod işaretleyicide birden çok sorgu yürütme
- 28. Subtask yürütme açık tanımı olmadan yürütme
- 29. SQL yürütme # 1054
- 30. Yürütme Aralık
DEP ve veri ve çalıştırılabilir kodun net olarak ayrıştırılması ve bu yürütülebilir belleğin yazılması ve veri belleğinin atlanamaması/çalıştırılamaması göz önüne alındığında, CLR/JIT ile Win32 sistemlerinde nasıl yapıldığına hala çok ilgi duyarım. . – Abel
@Abel [this] (http://blogs.msdn.com/b/vcblog/archive/2009/05/21/dynamicbase-and-nxcompat.aspx) makalesini ilginç bulabilirsiniz. – ghord