Perbezaan antara fasa dan lulus pengkompil

Perbezaan antara fasa dan lulus pengkompil

Fasa vs lulus pengkompil

Secara umum, Compiler adalah program komputer yang membaca program yang ditulis dalam satu bahasa, yang dipanggil bahasa sumber, dan menerjemahkannya ke bahasa lain, yang dipanggil bahasa sasaran. Secara tradisinya, bahasa sumber adalah bahasa peringkat tinggi seperti C ++ dan bahasa sasaran adalah bahasa peringkat rendah seperti bahasa pemasangan. Oleh itu, secara umum penyusun dapat dilihat sebagai penterjemah yang diterjemahkan dari satu bahasa ke bahasa yang lain. Lulus dan fasa adalah dua istilah yang sering digunakan dengan penyusun. Bilangan pas penyusun adalah bilangan kali ia melampaui sumber (atau beberapa bentuk perwakilannya). Pengkompil dipecahkan ke bahagian untuk kemudahan pembinaan. Fasa sering digunakan untuk memanggil satu bahagian bebas dari pengkompil.

Apa lulus dalam pengkompil?

Cara standard untuk mengklasifikasikan penyusun adalah dengan bilangan "pas". Biasanya, penyusun adalah proses intensif yang agak sumber dan pada mulanya komputer tidak mempunyai memori yang cukup untuk mengadakan program sedemikian yang melakukan pekerjaan yang lengkap. Oleh kerana batasan sumber perkakasan ini di komputer awal, pengkompil telah dipecahkan kepada program sub yang lebih kecil yang melakukan tugas separa dengan meneruskan kod sumber (membuat "lulus" atas sumber atau bentuk lain) dan melakukan analisis , transformasi dan tugas terjemahan secara berasingan. Oleh itu, bergantung kepada klasifikasi ini, pengkompil diindikasikan sebagai penyusun satu lulus atau multi-pass.

Seperti namanya, penyusun satu pasang disusun dalam satu pas. Lebih mudah untuk menulis pengkompil satu lulus dan juga mereka melakukan lebih cepat daripada penyusun pelbagai pass. Oleh itu, walaupun pada masa anda mempunyai batasan sumber, bahasa direka supaya mereka dapat disusun dalam satu lulus (e.g. Pascal). Sebaliknya, pengkompil multi-pass biasa terdiri daripada beberapa peringkat utama. Peringkat pertama adalah pengimbas (juga dikenali sebagai penganalisis leksikal). Pengimbas membaca program dan menukarkannya ke rentetan token. Peringkat kedua adalah parser. Ia menukarkan rentetan token ke pokok parse (atau pokok sintaks abstrak), yang menangkap struktur sintaktik program. Peringkat seterusnya ialah menafsirkan semantik struktur sintaksis. Tahap pengoptimuman kod dan peringkat penjanaan kod akhir ikuti ini.

Apakah fasa dalam pengkompil?

Fasa istilah sering muncul apabila anda bercakap mengenai pembinaan pengkompil. Pada mulanya, penyusun adalah setiap perisian tunggal, perisian monolitik yang ditulis oleh satu orang untuk penyusunan bahasa yang mudah. Tetapi apabila kod sumber bahasa diterjemahkan menjadi kompleks dan besar, pengkompil dipecahkan kepada pelbagai fasa (relatif bebas). Kelebihan mempunyai fasa yang berbeza ialah perkembangan pengkompil dapat diedarkan di kalangan pasukan pemaju. Selain itu, ia meningkatkan modulariti dan penggunaan semula dengan membenarkan fasa digantikan oleh yang lebih baik atau fasa tambahan (seperti pengoptimuman selanjutnya) untuk ditambah kepada pengkompil. Proses membahagikan kompilasi ke fasa diperkenalkan oleh PQCC (Projek Pengkompil Kualiti Pengeluaran Pengeluaran) di Carnegie Melon University. Mereka memperkenalkan istilah depan, hujung pertengahan dan belakang. Kebanyakan penyusun mempunyai sekurang -kurangnya dua fasa. Tetapi biasanya, hujung belakang dan hujung depan merangkum fasa ini.

Apakah perbezaan antara fasa dan lulus penyusun?

Fasa dan lulus adalah dua istilah yang digunakan dalam bidang penyusun. Lulus adalah satu kali penyusun melewati (melewati) kod sumber atau perwakilan lain. Biasanya, kebanyakan penyusun mempunyai sekurang-kurangnya dua fasa yang dipanggil hujung depan dan hujung belakang, sementara mereka boleh menjadi satu-pass atau multi-pass. Fasa digunakan untuk mengklasifikasikan penyusun mengikut pembinaan, sementara lulus digunakan untuk mengklasifikasikan pengkompil mengikut cara mereka beroperasi.