Perbedaan Fase dan Pass di Kompilator

Perbedaan Fase dan Pass di Kompilator
Perbedaan Fase dan Pass di Kompilator

Video: Perbedaan Fase dan Pass di Kompilator

Video: Perbedaan Fase dan Pass di Kompilator
Video: B. Indonesia-Konjungsi-12, PPLS dan Ronin 2024, November
Anonim

Fase vs Lulus di Kompilator

Secara umum, compiler adalah program komputer yang membaca program yang ditulis dalam satu bahasa, yang disebut bahasa sumber, dan menerjemahkannya ke dalam 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 Assembly. Jadi, secara umum compiler dapat dilihat sebagai penerjemah yang menerjemahkan dari satu bahasa ke bahasa lain. Pass dan Phase adalah dua istilah yang sering digunakan dengan compiler. Jumlah lintasan kompiler adalah berapa kali ia melewati sumber (atau beberapa bentuk representasinya). Kompiler dipecah menjadi beberapa bagian untuk kenyamanan konstruksi. Phase sering digunakan untuk memanggil satu bagian independen dari sebuah compiler.

Apa itu Pass di Compiler?

Cara standar untuk mengklasifikasikan compiler adalah dengan jumlah "pass". Biasanya, kompilasi adalah proses yang relatif intensif sumber daya dan pada awalnya komputer tidak memiliki cukup memori untuk menampung program yang melakukan pekerjaan lengkap. Karena keterbatasan sumber daya perangkat keras di komputer awal ini, kompiler dipecah menjadi sub program yang lebih kecil yang melakukan sebagian tugasnya dengan menelusuri kode sumber (membuat "melewati" sumber atau bentuk lain darinya) dan melakukan analisis, transformasi dan tugas terjemahan secara terpisah. Jadi, tergantung pada klasifikasi ini, kompiler diidentifikasi sebagai kompilator satu-pass atau multi-pass.

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

Apa itu Fase dalam Kompilator?

Istilah fase 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 sederhana. Tetapi ketika kode sumber bahasa yang akan diterjemahkan menjadi kompleks dan besar, kompiler dipecah menjadi beberapa fase (relatif independen). Keuntungan memiliki fase yang berbeda adalah bahwa pengembangan kompiler dapat didistribusikan di antara tim pengembang. Selain itu, ini meningkatkan modularitas dan penggunaan kembali dengan memungkinkan fase diganti dengan fase yang ditingkatkan atau fase tambahan (seperti optimasi lebih lanjut) untuk ditambahkan ke kompiler. Proses membagi kompilasi ke fase diperkenalkan oleh PQCC (Proyek Penyusun Kualitas Produksi) di Universitas Carnegie Melon. Mereka memperkenalkan istilah front end, middle end dan back end. Kebanyakan kompiler memiliki setidaknya dua fase. Tapi biasanya, back end dan front end merangkum fase-fase ini.

Apa perbedaan Phase dan Pass di Compiler?

Phase dan Pass adalah dua istilah yang digunakan di bidang kompiler. Pass adalah satu kali kompiler melewati (melewati) kode sumber atau representasi lain darinya. Biasanya, sebagian besar kompiler memiliki setidaknya dua fase yang disebut ujung depan dan ujung belakang, sementara itu bisa berupa satu-pass atau multi-pass. Phase digunakan untuk mengklasifikasi compiler menurut konstruksinya, sedangkan pass digunakan untuk mengklasifikasi compiler menurut cara kerjanya.

Direkomendasikan: