Perbedaan Antara Fase dan Lulus di Kompiler

Phase vs Pass in Compiler

Secara umum, kompiler adalah program komputer yang membaca program yang ditulis dalam satu bahasa, yang disebut bahasa sumber, dan menerjemahkannya ke bahasa lain, yang disebut bahasa target. Secara tradisional, bahasa sumber adalah bahasa tingkat tinggi seperti C ++ dan bahasa target adalah bahasa tingkat rendah seperti bahasa Majelis. Jadi, secara umum kompiler dapat dilihat sebagai penerjemah yang menerjemahkan dari satu bahasa ke bahasa lain. Lulus dan Fase adalah dua istilah yang sering digunakan dengan kompiler. Jumlah lintasan kompiler adalah berapa kali ia melewati sumber (atau beberapa bentuk representasi itu). Kompiler dipecah menjadi beberapa bagian untuk kenyamanan konstruksi. Fase sering digunakan untuk memanggil bagian independen tunggal dari kompiler.

Apa itu Pass in a Compiler?

Cara standar untuk mengklasifikasikan kompiler adalah dengan jumlah "operan". Biasanya, kompilasi adalah proses yang membutuhkan banyak sumber daya dan pada awalnya komputer tidak memiliki cukup memori untuk mengadakan program yang melakukan pekerjaan lengkap. Karena keterbatasan sumber daya perangkat keras pada komputer awal, kompiler dipecah menjadi sub program yang lebih kecil yang melakukan pekerjaan parsial dengan memeriksa kode sumber (membuat "lulus" atas sumber atau bentuk lain dari itu) dan melakukan analisis , tugas transformasi dan penerjemahan secara terpisah. Jadi, tergantung pada klasifikasi ini, kompiler diidentifikasi sebagai kompiler satu pass atau multi pass.

Seperti namanya, kompiler one-pass mengkompilasi dalam satu pass tunggal. Lebih mudah untuk menulis kompiler satu pass dan juga mereka melakukan lebih cepat daripada kompiler multi-pass. Oleh karena itu, bahkan pada saat Anda memiliki keterbatasan sumber daya, bahasa dirancang sehingga mereka dapat dikompilasi dalam sekali jalan (mis. Pascal). Di sisi lain, kompiler multi-pass tipikal terdiri dari beberapa tahap utama. Tahap pertama adalah pemindai (juga dikenal sebagai penganalisa leksikal). Pemindai membaca program dan mengubahnya menjadi serangkaian token. Tahap kedua adalah parser. Ini mengubah string token ke pohon parse (atau pohon sintaksis abstrak), yang menangkap struktur sintaksis program. Tahap selanjutnya adalah yang menafsirkan semantik dari struktur sintaksis. Tahap optimisasi kode dan tahap pembuatan kode akhir mengikuti ini.

Apa itu Fase dalam Kompiler?

Fase istilah sering muncul ketika Anda berbicara tentang konstruksi kompiler. Awalnya, kompiler adalah setiap bagian sederhana dari perangkat lunak monolitik tunggal yang ditulis oleh satu orang untuk kompilasi bahasa yang sederhana. Tetapi ketika kode sumber bahasa yang akan diterjemahkan menjadi kompleks dan besar, kompiler dipecah menjadi beberapa fase (relatif independen). Keuntungan dari memiliki fase yang berbeda adalah bahwa pengembangan compiler dapat didistribusikan di antara tim pengembang. Lebih jauh lagi, ini meningkatkan modularitas dan penggunaan kembali dengan membiarkan fase diganti dengan yang ditingkatkan atau fase tambahan (seperti optimasi lebih lanjut) untuk ditambahkan ke kompiler. Proses membagi kompilasi ke fase diperkenalkan oleh PQCC (Project Quality Compiler-Compiler Project) di Carnegie Melon University. Mereka memperkenalkan istilah front end, middle end dan back end. Kebanyakan kompiler memiliki setidaknya dua fase. Tetapi biasanya, ujung belakang dan ujung depan merangkum fase-fase ini.

Apa perbedaan antara Phase dan Pass di Compiler?

Phase dan Pass adalah dua istilah yang digunakan dalam bidang kompiler. Pass adalah satu kali kompiler melewati (melewati) kode sumber atau representasi lain dari itu. Biasanya, sebagian besar kompiler memiliki setidaknya dua fase yang disebut ujung depan dan ujung belakang, sementara mereka bisa berupa satu-pass atau multi-pass. Fase digunakan untuk mengklasifikasikan kompiler sesuai dengan konstruksi, sedangkan pass digunakan untuk mengklasifikasikan kompiler sesuai dengan bagaimana mereka beroperasi.