Desain Penyusun - Gambaran Umum

Komputer adalah perpaduan yang seimbang antara perangkat lunak dan perangkat keras. Perangkat keras hanyalah bagian dari perangkat mekanis dan fungsinya dikendalikan oleh perangkat lunak yang kompatibel. Perangkat keras memahami instruksi dalam bentuk muatan elektronik, yang merupakan padanan dari bahasa biner dalam pemrograman perangkat lunak. Bahasa biner hanya memiliki dua huruf, 0 dan 1. Sebagai petunjuk, kode perangkat keras harus ditulis dalam format biner, yang hanya berupa rangkaian 1 dan 0. Ini akan menjadi tugas yang sulit dan tidak praktis bagi pemrogram komputer untuk menulis kode seperti itu, itulah sebabnya kami memiliki kompiler untuk menulis kode tersebut.

Sistem Pemrosesan Bahasa

Kami telah mempelajari bahwa setiap sistem komputer terbuat dari perangkat keras dan perangkat lunak. Perangkat keras memahami bahasa, yang tidak dapat dipahami manusia. Jadi kami menulis program dalam bahasa tingkat tinggi, yang lebih mudah bagi kami untuk memahami dan mengingat. Program-program ini kemudian dimasukkan ke dalam serangkaian alat dan komponen OS untuk mendapatkan kode yang diinginkan yang dapat digunakan oleh mesin. Ini dikenal sebagai Sistem Pemrosesan Bahasa.

Bahasa tingkat tinggi diubah menjadi bahasa biner dalam berbagai fase. SEBUAHcompileradalah program yang mengubah bahasa tingkat tinggi ke bahasa assembly. Demikian pula, fileassembler adalah program yang mengubah bahasa assembly menjadi bahasa tingkat mesin.

Mari kita pahami dulu bagaimana sebuah program, menggunakan kompiler C, dijalankan pada mesin host.

  • Pengguna menulis program dalam bahasa C (bahasa tingkat tinggi).

  • Compiler C, mengkompilasi program dan menerjemahkannya ke program assembly (bahasa tingkat rendah).

  • Assembler kemudian menerjemahkan program perakitan menjadi kode mesin (objek).

  • Alat linker digunakan untuk menghubungkan semua bagian program bersama-sama untuk dieksekusi (kode mesin yang dapat dieksekusi).

  • Sebuah loader memuat semuanya ke dalam memori dan kemudian program dijalankan.

Sebelum terjun langsung ke konsep kompiler, kita harus memahami beberapa alat lain yang bekerja sama dengan kompiler.

Preprocessor

Sebuah preprocessor, umumnya dianggap sebagai bagian dari compiler, adalah alat yang menghasilkan input untuk compiler. Ini berkaitan dengan pemrosesan makro, augmentasi, penyertaan file, ekstensi bahasa, dll.

Penerjemah

Penerjemah, seperti kompiler, menerjemahkan bahasa tingkat tinggi ke bahasa mesin tingkat rendah. Perbedaannya terletak pada cara mereka membaca kode sumber atau masukan. Kompilator membaca seluruh kode sumber sekaligus, membuat token, memeriksa semantik, menghasilkan kode perantara, menjalankan seluruh program dan mungkin melibatkan banyak lintasan. Sebaliknya, interpreter membaca pernyataan dari input, mengubahnya menjadi kode perantara, menjalankannya, lalu mengambil pernyataan berikutnya secara berurutan. Jika terjadi kesalahan, penerjemah menghentikan eksekusi dan melaporkannya. sedangkan kompilator membaca seluruh program meskipun menemui beberapa kesalahan.

Assembler

Assembler menerjemahkan program bahasa assembly menjadi kode mesin. Output assembler disebut file objek, yang berisi kombinasi instruksi mesin serta data yang diperlukan untuk menempatkan instruksi ini di memori.

Linker

Linker adalah program komputer yang menghubungkan dan menggabungkan berbagai file objek menjadi satu untuk membuat file yang dapat dieksekusi. Semua file ini mungkin telah dikompilasi oleh assembler terpisah. Tugas utama linker adalah mencari dan menemukan modul / rutinitas yang direferensikan dalam sebuah program dan untuk menentukan lokasi memori di mana kode-kode ini akan dimuat, membuat instruksi program memiliki referensi absolut.

Pemuat

Loader adalah bagian dari sistem operasi dan bertanggung jawab untuk memuat file yang dapat dieksekusi ke dalam memori dan menjalankannya. Ini menghitung ukuran program (instruksi dan data) dan menciptakan ruang memori untuk itu. Ini menginisialisasi berbagai register untuk memulai eksekusi.

Kompiler silang

Kompiler yang berjalan pada platform (A) dan mampu menghasilkan kode yang dapat dieksekusi untuk platform (B) disebut kompilator silang.

Penyusun Sumber-ke-sumber

Kompiler yang mengambil kode sumber dari satu bahasa pemrograman dan menerjemahkannya ke dalam kode sumber dari bahasa pemrograman lain disebut kompilator sumber-ke-sumber.