Coba jelasin Arsitektur kompilator dari Kompilator dong

Arsitektur kompilator modern biasanya bukan lagi merupakan program tunggal namun merupakan rangkaian komunikasi antara program dengan tugas spesifik masing-masing. Program-program tersebut beserta tugasnya secara umum terdiri dari:

Compiler (kompilator) itu sendiri, yang menerima kode sumber dan menghasilkan bahasa tingkat rendah (assembly)

Assembler (perakit), yang menerima keluaran kompilator dan menghasilkan berkas objek dalam bahasa mesin

Linker (penaut), yang menerima berkas objek keluaran assembler untuk kemudian digabungkan dengan pustaka-pustaka yang diperlukan dan menghasilkan program yang dapat dieksekusi (executable)

Compiler yang menggunakan arsitektur ini misalnya GCC, Clang dan FreeBASIC.

Beberapa kompilator tidak menggunakan arsitektur di atas secara gamblang, dikarenakan komunikasi antara program jauh lebih lambat dibandingkan jika komunikasi dilakukan secara internal di dalam satu program. Sehingga kompilator-kompilator tersebut mengintegrasikan assembler dan linker di dalam kompilator. Namun, biasanya arsitektur yang digunakan pun tidak kaku dan mengizinkan penggunaan assembler maupun linker eksternal (berguna jika assembler dan linker internal bermasalah atau memiliki galat). Kompilator yang menggunakan arsitektur ini salah satunya adalah Free Pascal.

Profesor Niklaus Wirth dalam bukunya Compiler Construction  menyatakan bahwa penggunaan assembler sebagai bahasa perantara sering kali tidak memberikan keuntungan yang signifikan, sehingga dia menyarankan agar kompilator langsung menghasilkan bahasa mesin. Kompilator dengan arsitektur seperti ini dapat berjalan dengan sangat cepat, seperti yang ditunjukkan pada kompilator orisinil Pascal, Modula-2 dan Oberon yang dibuat oleh sang profesor.