LLM Menunjukkan Hasil Beragam dengan Pemrograman Assembly: Claude Menghasilkan Fraktal Mandelbrot Setelah Beberapa Iterasi

Tim Komunitas BigGo
LLM Menunjukkan Hasil Beragam dengan Pemrograman Assembly: Claude Menghasilkan Fraktal Mandelbrot Setelah Beberapa Iterasi

Sebuah eksperimen terbaru yang menguji kemampuan Claude dalam menghasilkan kode assembly x86 telah memicu diskusi komunitas tentang kondisi terkini model bahasa besar ketika bekerja dengan bahasa pemrograman tingkat rendah. Tes tersebut melibatkan pembuatan generator fraktal Mandelbrot seni ASCII, yang memerlukan beberapa iterasi dan debugging otomatis untuk mencapai hasil yang berfungsi.

Screenshot ini menyoroti tantangan teknis dalam menghasilkan kode assembly x86 untuk generator fraktal Mandelbrot menggunakan model bahasa besar seperti Claude
Screenshot ini menyoroti tantangan teknis dalam menghasilkan kode assembly x86 untuk generator fraktal Mandelbrot menggunakan model bahasa besar seperti Claude

Tantangan Generasi Kode Assembly

Komunitas telah mengidentifikasi beberapa masalah konsisten ketika menggunakan LLM untuk pemrograman assembly. Para pengembang melaporkan bahwa model-model ini sering menghasilkan kode yang gagal untuk di-assemble, seringkali berhalusinasi detail register perangkat keras dan menghasilkan implementasi yang tidak efisien. Manajemen register antar subrutin tampaknya menjadi kelemahan khusus, karena model-model tersebut kesulitan mempertahankan konvensi yang konsisten yang secara alami dikembangkan oleh programmer assembly manusia.

Pengalaman bervariasi secara signifikan tergantung pada tugas spesifik. Pekerjaan penerjemahan antar bahasa assembly, seperti porting kode dari sintaks x86 NASM ke sintaks RISC-V GAS, menunjukkan hasil yang jauh lebih baik karena terutama melibatkan konversi langsung daripada generasi kode asli.

Masalah Umum Assembly LLM:

  • Kode yang gagal di-assemble
  • Detail register perangkat keras yang dihalusinasi
  • Generasi kode yang tidak efisien
  • Manajemen register yang buruk antar subrutin
  • Konvensi pemanggilan yang tidak konsisten

Peningkatan dalam Instruksi Khusus

Versi terbaru model AI menunjukkan peningkatan yang mencolok dalam menangani operasi SIMD (Single Instruction, Multiple Data). Claude 4 Sonnet mendemonstrasikan performa yang jauh lebih baik dengan operasi tervektorisasi dibandingkan versi sebelumnya, yang sering menghasilkan loop skalar sambil mengklaim telah memvektorisasi kode tersebut. Model-model sebelumnya juga membuat keputusan yang tidak logis tentang penggunaan set instruksi, seperti menambahkan kondisional yang tidak perlu untuk SSE ketika dukungan AVX2 secara eksplisit telah ditentukan.

Beberapa kali saya mencobanya, saya perhatikan mereka cukup buruk dalam melacak register saat berpindah antar subrutin.

Area Keberhasilan LLM Assembly:

  • Terjemahan antara bahasa assembly (misalnya, x86 NASM ke RISC-V GAS)
  • Intrinsik SIMD (mengalami peningkatan signifikan di Claude 4 Sonnet)
  • Algoritma sederhana yang terdokumentasi dengan baik dan memiliki contoh yang tersedia
  • Tugas porting dan konversi kode

Data Pelatihan dan Indikator Kualitas Kode

Kualitas kode assembly yang dihasilkan mengungkapkan wawasan menarik tentang data pelatihan. Pengembang berpengalaman dapat mengenali tanda-tanda ketidakberpengalaman dalam kode yang dihasilkan, seperti menggunakan mov ecx, 0 alih-alih xor ecx, ecx yang lebih konvensional untuk mengosongkan register. Pola-pola ini menunjukkan paparan terbatas terhadap produksi demoscene dan contoh kode assembly berkualitas tinggi lainnya selama pelatihan.

Aplikasi Praktis dan Keterbatasan

Meskipun generator Mandelbrot akhirnya berhasil, komunitas mencatat bahwa fraktal seni ASCII mewakili contoh yang relatif sederhana dengan kode yang sudah ada berlimpah untuk dirujuk. Tugas assembly yang lebih kompleks, khususnya yang melibatkan inisialisasi perangkat keras, driver perangkat, atau transisi real-mode ke long-mode, terus menantang model AI saat ini secara signifikan.

Diskusi tersebut menyoroti bahwa LLM saat ini bekerja lebih baik sebagai alat penerjemahan untuk kode assembly daripada generator kode asli, terutama untuk implementasi khusus atau spesifik perangkat keras di mana presisi dan efisiensi sangat penting.

Referensi: Mandelbrot in x86 assembly by Claude