Majelis penulis vs kompiler dalam arsitektur VLIW

8

Saya membaca kalimat ini dalam sebuah buku:

Dalam arsitektur VLIW, kompiler / dan atau penulis perakitan memilih instruksi yang dapat dieksekusi secara paralel.

Apa perbedaan antara penulis majelis dan kompiler? Apakah penulis majelis juga berarti sama dengan assembler?

Dasha Sham
sumber

Jawaban:

33

"Majelis penulis" dalam buku itu adalah pengembang perangkat lunak manusia yang menulis kode dalam bahasa assembler.

gnasher729
sumber
15
1. penerjemah tidak mengonversi apa pun menjadi bahasa assembly. 2. Setiap alat yang mengubah kode sumber ke bahasa assembly adalah sebuah kompiler.
gnasher729
4
@ KellyS.French assembler mengonversi kode bahasa assembly ke kode mesin, jadi dengan definisi ini ini bukan kompiler. Namun, jika Anda memiliki alat yang mengubah satu bahasa rakitan menjadi bahasa lain (mis. ARBfp1.0 ke bahasa rakitan asli GPU modern), alat ini adalah kompiler (dengan definisi ini).
Ruslan
1
@ gnasher729 - nitpick: oleh sebagian besar definisi, bagian "Bahasa assembly" dari (2) tidak diperlukan (terutama, hal-hal seperti kompiler naskah atau kompiler java, yang tidak ada yang mengkompilasi sumber ke perakitan, tetapi mengkompilasi ke javascript atau bytecode java masing-masing). Baru-baru ini umumnya berarti alat apa pun yang mengkompilasi satu bahasa pemrograman ke bahasa pemrograman lain (dan perakitan secara teknis adalah bahasa pemrograman).
Delioth
2
@ KellyS.French: Compiler adalah program yang menerjemahkan program dalam bahasa X menjadi program yang secara semantik setara dalam bahasa Y. Bergantung pada apa sebenarnya bahasa X dan Y, kami memiliki nama khusus untuk kompiler tersebut, dan "assembler" adalah salah satu nama khusus itu. Tetapi mereka semua jenis kompiler khusus. Misal jika Y = rakitan dan X lebih tinggi daripada Y, maka kita menyebutnya assembler. Jika Y = rakitan dan X lebih rendah dari Y, kami menyebutnya disassembler. Jika X adalah level yang lebih rendah dari Y dan Y! = Perakitan, kami menyebutnya de-compiler. Jika X dan Y adalah tingkat yang sama, penggunaan baru-baru ini akan ...
Jörg W Mittag
2
@ KellyS.French: Saya kira alasan mengapa assembler biasanya tidak banyak berbicara tentang kompiler adalah karena assembler adalah kompiler yang sangat membosankan. Pada intinya, assembler hanyalah pemetaan 1: 1 dari mnemonik yang dapat dibaca manusia ke opcode yang dapat dibaca mesin. Tahap parsing sederhana, tidak ada tipe, tidak ada optimisasi, pembuatan kode sepele. Tidak satu pun dari hal-hal algoritmik yang menarik yang dilakukan oleh penyusun hadir: menguraikan bahasa yang kompleks, memeriksa jenis, inferensi jenis, optimisasi, pemetaan semantik yang cerdas, dll.
Jörg W Mittag
10

Dalam arsitektur VLIW, kompiler / dan atau penulis perakitan memilih instruksi yang dapat dieksekusi secara paralel

Arti dari kalimat ini adalah bahwa dalam arsitektur VLIW, kode assembler (mesin) mendefinisikan instruksi mana yang akan dieksekusi secara paralel, sehingga tetap pada saat kode assembly ditulis oleh manusia atau dihasilkan oleh kompiler.

Ini berbeda dari CPU super-skalar, di mana instruksi dapat dieksekusi secara paralel, ini adalah keputusan yang dibuat oleh CPU setiap kali mengeksekusi instruksi.

Ada juga CPU yang menggabungkan kedua pendekatan - Itanium2 kompatibel dengan Itanium, mengemas 3 instruksi menjadi kata VLIW. Tapi, setelahnya, Itanium2 dapat menjalankan dua paket seperti itu dalam satu siklus CPU, dan keputusan ini dibuat pada waktu eksekusi.

Bulat
sumber