Perbezaan Antara Fasa dan Pas dalam Kompilator

Anonim

Fasa vs Pas dalam Compiler

Secara umum, pengkompil adalah program komputer yang membaca program yang ditulis dalam satu bahasa, yang dipanggil bahasa sumber, dan diterjemahkan ke bahasa yang lain, yang dipanggil bahasa sasaran. Secara tradisinya, bahasa sumber adalah bahasa peringkat tinggi seperti C ++ dan bahasa target adalah bahasa tahap rendah seperti bahasa Perhimpunan. Oleh itu, pengkompil umum boleh dilihat sebagai penterjemah yang menerjemahkan dari satu bahasa ke bahasa lain. Pas dan Fasa adalah dua istilah yang sering digunakan dengan penyusun. Bilangan pas pengompil ialah bilangan kali ia melepasi sumber (atau beberapa bentuk perwakilan). Pengkompil dibahagikan kepada bahagian untuk kemudahan pembinaan. Fasa sering digunakan untuk memanggil sebahagian bebas daripada satu pengkompil.

Apakah Pass dalam Compiler?

Cara standard untuk mengklasifikasikan penyusun adalah dengan bilangan "pas". Biasanya, penyusun adalah proses yang agak intensif dan pada awalnya komputer tidak mempunyai memori yang cukup untuk mengadakan program seperti itu yang melakukan kerja lengkap. Disebabkan pembatasan sumber perkakasan ini pada komputer awal, penyusun telah dipecah kepada sub-program yang lebih kecil yang melakukan tugas separa dengan meneruskan kod sumber (membuat "lulus" di atas sumber atau beberapa bentuk lain) dan melakukan analisis, transformasi dan tugas penterjemahan secara berasingan. Oleh itu, bergantung kepada pengkelasan ini, pengkompil dijumpai sebagai penyusun satu pas atau multi-pass.

Seperti namanya, penyusun satu lulus mengkompilasi dalam pas tunggal. Ia lebih mudah untuk menulis compiler satu pas dan juga mereka melakukan lebih cepat daripada penyusun berbilang pas. Oleh itu, walaupun pada masa anda mempunyai batasan sumber, bahasa direka supaya mereka dapat disusun dalam satu pas (eg Pascal). Sebaliknya, kompilator berbilang pasang biasa terdiri daripada beberapa peringkat utama. Peringkat pertama ialah pengimbas (juga dikenali sebagai penganalisis leksikal). Pengimbas membaca program itu dan menukarnya kepada rentetan token. Peringkat kedua adalah parser. Ia menukarkan rentetan token ke pokok parse (atau pokok sintaks abstrak), yang menangkap struktur sintaks program. Peringkat seterusnya adalah yang mentafsirkan semantik struktur sintaksis. Tahap pengoptimuman kod dan peringkat peringkat akhir kod berikut ini.

Apakah Fasa dalam Pengkompil?

Fasa istilah sering muncul apabila anda bercakap tentang pembinaan pengkompil. Pada mulanya, penyusun adalah setiap kepingan mudah tunggal, perisian monolitik yang ditulis oleh seorang untuk kompilasi bahasa yang mudah. Tetapi apabila kod sumber bahasa diterjemahkan menjadi kompleks dan besar, pengkompil telah dipecahkan kepada fasa (relatif).Keuntungan mempunyai fasa yang berbeza adalah bahawa pembangunan pengkompil boleh diedarkan di antara satu kumpulan pemaju. Tambahan pula, ia meningkatkan modularity dan penggunaan semula dengan membenarkan fasa digantikan oleh yang lebih baik atau fasa tambahan (seperti pengoptimuman lanjut) untuk ditambah kepada pengkompil. Proses membahagikan kompilasi kepada fasa diperkenalkan oleh PQCC (Pengeluaran Kualiti Kompilator-Pengkompil Projek) di Carnegie Melon University. Mereka memperkenalkan istilah depan depan, hujung pertengahan dan hujung belakang. Kebanyakan penyusun mempunyai sekurang-kurangnya dua fasa. Tetapi selalunya, hujung belakang dan hujung depan merangkumi fasa-fasa ini.

Apakah perbezaan antara Fasa dan Lulus dalam Compiler?

Fasa dan Pas adalah dua istilah yang digunakan dalam bidang penyusun. Lulus adalah satu masa pengetip melewati (meneruskan) kod sumber atau beberapa perwakilan lain. Biasanya, kebanyakan penyusun mempunyai sekurang-kurangnya dua fasa yang dipanggil akhir depan dan belakang, sementara ia boleh menjadi satu pas atau multi-pass. Fasa digunakan untuk mengklasifikasikan penyusun mengikut pembinaan, manakala pas digunakan untuk mengklasifikasikan penyusun mengikut cara mereka beroperasi.