LLM Menunjukkan Hasil Bercampur dengan Pengaturcaraan Assembly: Claude Menjana Fraktal Mandelbrot Selepas Beberapa Iterasi

Pasukan Komuniti BigGo
LLM Menunjukkan Hasil Bercampur dengan Pengaturcaraan Assembly: Claude Menjana Fraktal Mandelbrot Selepas Beberapa Iterasi

Satu eksperimen terkini yang menguji keupayaan Claude untuk menjana kod assembly x86 telah mencetuskan perbincangan komuniti mengenai keadaan semasa model bahasa besar apabila bekerja dengan bahasa pengaturcaraan peringkat rendah. Ujian tersebut melibatkan penciptaan penjana fraktal Mandelbrot seni ASCII, yang memerlukan beberapa iterasi dan penyahpepijatan automatik untuk mencapai hasil yang berfungsi.

Tangkapan skrin ini menyerlahkan cabaran teknikal dalam menjana kod assembly x86 untuk penjana fraktal Mandelbrot menggunakan model bahasa besar seperti Claude
Tangkapan skrin ini menyerlahkan cabaran teknikal dalam menjana kod assembly x86 untuk penjana fraktal Mandelbrot menggunakan model bahasa besar seperti Claude

Cabaran Penjanaan Kod Assembly

Komuniti telah mengenal pasti beberapa masalah konsisten apabila menggunakan LLM untuk pengaturcaraan assembly. Pembangun melaporkan bahawa model-model ini kerap menjana kod yang gagal untuk dipasang, sering menghalusinasi butiran daftar perkakasan dan menghasilkan pelaksanaan yang tidak cekap. Pengurusan daftar antara subrutin nampaknya menjadi kelemahan khusus, kerana model-model tersebut bergelut untuk mengekalkan konvensyen konsisten yang secara semula jadi dibangunkan oleh pengaturcara assembly manusia.

Pengalaman berbeza dengan ketara bergantung pada tugas khusus. Kerja terjemahan antara bahasa assembly, seperti memindahkan kod daripada sintaks x86 NASM kepada sintaks RISC-V GAS, menunjukkan hasil yang jauh lebih baik kerana ia terutamanya melibatkan penukaran langsung dan bukannya penjanaan kod asal.

Isu Biasa Assembly LLM:

  • Kod yang gagal untuk dihimpun
  • Butiran daftar perkakasan yang dihalusinasi
  • Penjanaan kod yang tidak cekap
  • Pengurusan daftar yang lemah antara subrutin
  • Konvensyen panggilan yang tidak konsisten

Penambahbaikan dalam Arahan Khusus

Versi terkini model AI menunjukkan penambahbaikan ketara dalam mengendalikan operasi SIMD (Single Instruction, Multiple Data). Claude 4 Sonnet menunjukkan prestasi yang jauh lebih baik dengan operasi bervektorkan berbanding versi terdahulu, yang sering menghasilkan gelung skalar sambil mendakwa telah memvektorkan kod. Model terdahulu juga akan membuat keputusan tidak logik mengenai penggunaan set arahan, seperti menambah syarat yang tidak perlu untuk SSE apabila sokongan AVX2 dinyatakan secara eksplisit.

Beberapa kali saya mencubanya, saya perasan mereka agak lemah dalam menjejaki daftar semasa mereka bergerak antara subrutin.

Bidang Kejayaan Pemasangan LLM:

  • Penterjemahan antara bahasa pemasangan (contohnya, x86 NASM kepada RISC-V GAS)
  • Intrinsik SIMD (bertambah baik dengan ketara dalam Claude 4 Sonnet)
  • Algoritma mudah dan berdokumentasi lengkap dengan contoh sedia ada
  • Tugas pemindahan dan penukaran kod

Data Latihan dan Penunjuk Kualiti Kod

Kualiti kod assembly yang dijana mendedahkan pandangan menarik mengenai data latihan. Pembangun berpengalaman dapat mengesan tanda-tanda ketidakberpengalaman dalam kod yang dijana, seperti menggunakan mov ecx, 0 bukannya xor ecx, ecx yang lebih konvensional untuk mengosongkan daftar. Corak-corak ini menunjukkan pendedahan terhad kepada produksi demoscene dan contoh kod assembly berkualiti tinggi lain semasa latihan.

Aplikasi Praktikal dan Had

Walaupun penjana Mandelbrot akhirnya berfungsi, komuniti menyatakan bahawa fraktal seni ASCII mewakili contoh yang agak mudah dengan kod sedia ada yang banyak untuk rujukan. Tugas assembly yang lebih kompleks, terutamanya yang melibatkan permulaan perkakasan, pemacu peranti, atau peralihan mod sebenar kepada mod panjang, terus mencabar model AI semasa dengan ketara.

Perbincangan menyerlahkan bahawa LLM pada masa ini berfungsi lebih baik sebagai alat terjemahan untuk kod assembly dan bukannya penjana kod asal, terutamanya untuk pelaksanaan khusus atau khusus perkakasan di mana ketepatan dan kecekapan adalah kritikal.

Rujukan: Mandelbrot in x86 assembly by Claude