Perbezaan Antara Fasa dan Lulus dalam Compiler

Fasa vs Pas dalam Compiler

Secara umum, pengkompil adalah program komputer yang membaca program yang ditulis dalam satu bahasa, yang disebut bahasa sumber, dan menerjemahkannya ke bahasa yang lain, yang disebut bahasa sasaran. Secara tradisinya, bahasa sumber adalah bahasa peringkat tinggi seperti C ++ dan bahasa sasaran adalah bahasa tahap rendah seperti bahasa Asasi. 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 lulus pengkompil adalah bilangan kali ia pergi ke sumber (atau beberapa bentuk perwakilan). Pengkompil dibahagikan kepada bahagian untuk kemudahan pembinaan. Fasa sering digunakan untuk memanggil sebahagian bebas daripada satu pengkompil.

Apakah Lulus dalam Kompilator?

Cara standard untuk mengklasifikasikan penyusun adalah dengan bilangan "pas". Biasanya, penyusun adalah proses intensif yang agak sumber dan pada mulanya komputer tidak mempunyai cukup memori untuk mengadakan program seperti itu yang melakukan kerja lengkap. Oleh kerana batasan sumber perkakasan ini pada komputer awal, penyusun telah dipecah kepada sub-program 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 pas dikumpulkan dalam satu pas. 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 dikumpulkan dalam satu pas (contohnya Pascal). Sebaliknya, pengkompil multi-pass biasa terdiri daripada beberapa peringkat utama. Peringkat pertama ialah pengimbas (juga dikenali sebagai penganalisis leksikal). Pengimbas membaca program dan menukarnya kepada rentetan token. Peringkat kedua adalah parser. Ia menukarkan rentetan token ke dalam pokok parse (atau pokok sintaks abstrak), yang menangkap struktur sintaks program. Peringkat seterusnya adalah yang mentafsirkan semantik struktur sintaksis. Peringkat pengoptimuman kod dan peringkat akhir kod akhir mengikuti ini.

Apakah Fasa dalam Pengkompil?

Fasa istilah sering muncul apabila anda bercakap mengenai pembinaan kompilator. 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). Kelebihan mempunyai fasa yang berbeza adalah bahawa perkembangan pengkompil dapat diagihkan di kalangan tim 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 Pengkompil-Kompilator-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 pengubah yang melewati (meneruskan) kod sumber atau beberapa perwakilan lain. Kebiasaannya, kebanyakan penyusun mempunyai sekurang-kurangnya dua fasa yang dipanggil akhir depan dan belakang, sementara mereka boleh menjadi satu pas atau multi-pass. Fasa digunakan untuk mengklasifikasikan penyusun mengikut pembinaan, manakala pas digunakan untuk mengklasifikasikan penyusun mengikut cara mereka beroperasi.