Menurut masalah yang saya buat (https://github.com/dotnet/coreclr/issues/17294), membuat backend baru untuk arsitektur baru adalah pekerjaan yang rumit, jadi mengapa tidak membuat backend baru yang mendukung banyak arsitektur?
Mono telah menerapkan backend LLVM .
Saya mengatakan ini karena arsitektur Power dan s390x kembali dengan intensitas relatif ...
Beberapa tahun yang lalu kami mengerjakan generator kode LLVM untuk .Net: LLILC . Kami mengalami sejumlah masalah yang tampaknya sulit untuk diatasi: dukungan untuk GC yang tepat, dukungan penuh untuk model pengecualian .Net, dan throughput yang rendah. Anda dapat membaca beberapa detailnya di sini: LLILC di Enam Bulan .
Mono melalui LLVM menggunakan GC konservatif dan (setidaknya dalam beberapa kasus) tidak menangani berbagai perilaku pengecualian. Ini dapat diterima untuk target aplikasi Mono, tetapi tidak cukup umum untuk tujuan kita.
LLILC mungkin masih menarik sebagai jit tingkat atas (suatu hari nanti) atau sebagai kendaraan pendorong untuk menjalankan codegen dasar pada arsitektur baru.
Hai @Anyers
Saya memperbaiki masalah build sederhana untuk LLILC https://github.com/dotnet/llilc/issues/1097
Tolong tinjau.
Terima kasih,
Leslie Zhai
Saya akan menutup masalah ini, karena pertanyaannya telah dijawab.
Komentar yang paling membantu
Beberapa tahun yang lalu kami mengerjakan generator kode LLVM untuk .Net: LLILC . Kami mengalami sejumlah masalah yang tampaknya sulit untuk diatasi: dukungan untuk GC yang tepat, dukungan penuh untuk model pengecualian .Net, dan throughput yang rendah. Anda dapat membaca beberapa detailnya di sini: LLILC di Enam Bulan .
Mono melalui LLVM menggunakan GC konservatif dan (setidaknya dalam beberapa kasus) tidak menangani berbagai perilaku pengecualian. Ini dapat diterima untuk target aplikasi Mono, tetapi tidak cukup umum untuk tujuan kita.
LLILC mungkin masih menarik sebagai jit tingkat atas (suatu hari nanti) atau sebagai kendaraan pendorong untuk menjalankan codegen dasar pada arsitektur baru.