Pengantar Teknik Kompilasi

Compiler.svg

Nama “compiler” digunakan untuk program yang menerjemahkan bahasa kode sumber dari bahasa pemrograman tingkat tinggi ke bahasa tingkat yang lebih rendah (misalnya, bahasa assembly atau bahasa mesin). Jika program dikompilasi dapat dijalankan pada komputer yang CPU atau sistem operasi yang berbeda dari satu di mana compiler berjalan. Compiler dikenal sebagai cross-compiler.

Sebuah program yang menerjemahkan dari bahasa tingkat rendah ke tingkat yang lebih tinggi dinamakan sebuah decompiler. Sebuah program yang menerjemahkan antara bahasa tingkat tinggi biasanya disebut penerjemah bahasa, penerjemah sumber ke sumber, atau bahasa converter.

Sebuah penerjemah bahasa biasanya sebuah program yang menerjemahkan bentuk ekspresi tanpa perubahan bahasa.

Kompiler (compiler) adalah sebuah program komputer yang berguna untuk menerjemahkan program komputer yang ditulis dalam bahasa pemrograman tertentu menjadi program yang ditulis dalam bahasa pemrograman lain.

Compiler memungkinan untuk melakukan banyak atau semua oper asi berikut: analisis leksikal, preprocessing, parsing, analisis semantik (Sintaks-diarahkan terjemahan), generasi kode, dan kode optimasi.
Istilah compiler terkadang digunakan untuk merujuk ke sebuah parser generator, alat sering digunakan untuk membantu membuat lexer dan parser.

Sejarah Compiler

Software untuk komputer awal terutama ditulis dalam bahasa assembly. Bahasa tingkat tinggi pemrograman belum ditemukan sampai menghasilkan dan tidak dapat menggunakan kembali pada perangkat lunak pada berbagai jenis CPU mulai menjadi signifikan, biaya nya pun lebih besar dari pada biaya menulis kompilator. Kapasitas memori yang terbatas dari komputer awal menyebabkan tantangan teknis substansial ketika mendesain compiler pertama kali.
Compiler memungkinkan pengembangan program yang mesin-independen. Sebelum pengembangan Formula Translator (FORTRAN), bahasa tingkat tinggi pertama, pada 1950-an mesin-dependent bahasa assembly secara luas digunakan oleh umum. Sedangkan bahasa assembly menghasilkan program yang lebih dapat digunakan kembali dan relocatable daripada kode mesin pada arsitektur yang sama, itu harus diubah atau ditulis ulang jika program yang akan dijalankan pada arsitektur perangkat keras komputer yang berbeda.

Dengan kemajuan tingkat tinggi bahasa pemrograman yang diikuti FORTRAN, seperti COBOL, C, dan BASIC, programmer bisa menulis mesin-independen program sumber. Sebuah compiler menerjemahkan tingkat tinggi program sumber ke program target dalam bahasa mesin untuk hardware tertentu. Setelah program target yang dihasilkan, pengguna dapat mengeksekusi program.
Menjelang akhir tahun 1950 mesin-independen adalah bahasa pemrograman pertama kali diusulkan. Selanjutnya kompiler dalam beberapa percobaan dikembangkan.
Compiler pertama ditulis oleh Grace Hopper, pada tahun 1952, untuk bahasa pemrograman A-0. Tim yang dipimpin oleh John FORTRAN Backus di IBM, compiler diperkenalkan compiler secara lengkap pertama pada tahun 1957. COBOL adalah bahasa awal untuk dikompilasi pada beberapa arsitektur, pada tahun 1960.

Dalam domain aplikasi banyak ide untuk menggunakan bahasa tingkat tinggi dengan mudah dimengerti. Karena memperluas fungsi tersebut, didukung oleh bahasa pemrograman baru dan meningkatnya kompleksitas arsitektur komputer, sehingga compiler telah menjadi lebih kompleks.
Kompiler Awal ditulis dalam bahasa assembly. Compiler hosting pribadi pertama mampu meng-kompilasi kode sumber sendiri dalam bahasa tingkat tinggi dan diciptakan pada tahun 1962 untuk Lisp oleh Tim Hart dan Mike Levin di MIT, Sejak tahun 1970-an telah menjadi umum untuk menerapkan kompilasi pada komputer.

Compiler dalam bahasa yaitu mengkompilasi, meskipun keduanya Pascal dan bahasa C telah menjadi pilihan populer untuk implementasi bahasa.
Membangun compiler hosting adalah bootstrap, namun memiliki masalah compiler, seperti pertama kali untuk bahasa harus disusun baik dengan tangan atau dengan compiler yang ditulis dalam bahasa yang berbeda, atau (seperti Hart dan Levin Lisp compiler) disusun dengan menjalankan compiler di penerjemah.

Struktur Kompilator
Struktur kompilator (Compiler source) adalah program yang menjembatani bahasa tingkat tinggi dengan komputer. Compiler membutuhkan :
1) menentukan kebenaran sintaks program,
2) menghasilkan kode objek yang benar dan efisien,
3) run-time organisasi, dan
4) format output sesuai dengan assembler dan / atau konvensi linker. Compiler terdiri dari tiga bagian utama: FRONT-END, MIDLLE-END, dan BACK-END.

FRONT END dapat memeriksa apakah program ini benar ditulis dalam sintaks bahasa pemrograman dan semantik. Berikut program legal dan ilegal diakui. Kesalahan dilaporkan, jika ada, dengan cara yang bermanfaat. Tipe pemeriksaan jenis ini juga dilakukan dengan mengumpulkan jenis informasi. FRONT END kemudian menghasilkan sebuah representasi intermediate atau IR (intermediate representation) dari kode sumber untuk pengolahan.

MIDLLE-END adalah di mana optimasi berlangsung. Transformasi Khas untuk optimasi penghapusan kode tidak berguna atau tidak terjangkau, penemuan dan penyebaran nilai-nilai konstan, relokasi ke tempat perhitungan lebih jarang dieksekusi (misalnya, keluar dari lingkaran), atau spesialisasi perhitungan berdasarkan konteks. Bagian BACK-END menghasilkan IR lain untuk BACK-END berikutnya. Untuk upaya optimasi Kebanyakan difokuskan pada bagian ini.

800px-P_np_np-complete_np-hard.svg

 

BACK-END bertanggung jawab untuk menerjemahkan IR dari MIDLLE-END ke dalam kode assembly. Instruksi target yang dipilih untuk setiap instruksi IR. Daftar penerima pengalihan alokasi register prosesor untuk variabel program. BACK-END ini memanfaatkan perangkat keras dengan mencari tahu bagaimana untuk menjaga unit agar eksekusi paralel berjalan lancar, mengisi delay slot, dan sebagainya. Meskipun sebagian besar algoritma untuk optimasi berada kompleksitas (NP), dan teknik heuristik yang berkembang dengan baik.

Kompiler keluaran (Output Compiler)
Salah satu klasifikasi kompiler adalah dengan platform yang mereka mengeksekusi kode yang dihasilkan. Hal ini dikenal sebagai platform target.

Sebuah kompiler asli (classified as native) atau host adalah salah satu yang keluaran dimaksudkan untuk langsung menjalankan pada jenis yang sama dari sistem komputer dan operasi yang compiler itu sendiri berjalan. Output dari sebuah cross compiler dirancang untuk dijalankan pada platform yang berbeda. Kompiler lintas sering digunakan ketika mengembangkan perangkat lunak untuk embedded system yang tidak dimaksudkan untuk mendukung lingkungan pengembangan perangkat lunak.

Output dari compiler yang menghasilkan kode untuk mesin virtual atau Virtual machine (VM) mungkin atau tidak mungkin dijalankan pada platform yang sama sebagai compiler yang menghasilkannya. Untuk alasan ini compiler tersebut biasanya tidak diklasifikasikan sebagai kompiler asli (classified as native) atau lintas kompiler (cross compilers).

Bahasa tingkat rendah yang merupakan target dari kompilator mungkin sendiri menjadi bahasa pemrograman tingkat tinggi. Bahasa C, sering disebut semacam assembler portabel, dan juga dapat menjadi bahasa target kompilator. Misalnya: Cfront, compiler asli (original compiler) untuk C dan + + C digunakan sebagai bahasa target.

Kompilasi (Compiled) dan Penafsiran Bahasa (Interpreted Languages)
Bahasa tingkat tinggi pemrograman biasanya muncul dengan jenis terjemahan, baik dirancang sebagai bahasa dikompilasi atau bahasa ditafsirkan. Namun, dalam prakteknya jarang menggunakan bahasa yang membutuhkan untuk secara eksklusif dikompilasi atau ditafsirkan secara eksklusif, meskipun ada kemungkinan untuk merancang bahasa yang bergantung pada re-interpretasi. Kategori ini biasanya mencerminkan implementasi yang paling populer atau luas bahasa misalnya, BASIC kadang-kadang disebut penafsiran bahasa (Interpreted Languages), dan Bahasa C disebut kompilasi (compiled).

Interpretasi tidak menggantikan kompilasi sepenuhnya. Ini hanya menyembunyikan itu dari pengguna dan membuatnya bertahap. Meskipun penerjemah sendiri bisa diartikan, sebuah program langsung dieksekusi diperlukan suatu tempat di bagian bawah tumpukan (lihat bahasa mesin).
Beberapa spesifikasi bahasa mengeja bahwa implementasi harus mencakup pusat kompilasi, misalnya, Common Lisp. Namun, tidak ada yang melekat dalam definisi Common Lisp yang berhenti dari penafsiran bahasa. Bahasa lain memiliki fitur yang sangat mudah untuk mengimplementasikan dalam seorang penerjemah, namun membuat tulisan kompilator jauh lebih sulit. Misalnya, APL, SNOBOL4, dan bahasa scripting banyak memungkinkan program untuk membangun source code sewenang-wenang pada saat ini.

Kompilasi Perangkat Keras (Hardware Compilation)
Output dari beberapa kompiler dapat menargetkan perangkat keras komputer pada tingkat yang sangat rendah, misalnya Field Programmable Gate Array (FPGA) atau Application Specific Integrated Circuit (ASIC). Kompiler tersebut dikatakan hardware kompiler atau alat sintesis, karena kode sumber mereka mengkompilasi secara efektif, mengontrol konfigurasi akhir dari perangkat keras dan bagaimana ia beroperasi, output dari kompilasi tidak menginstruksi kode yang dijalankan secara berurutan namun hanya menginterkoneksi transistor atau lookup tabel. Misalnya, XST adalah Sintesis Xilinx Tool yang digunakan untuk mengkonfigurasi FPGA. Alat serupa yang tersedia dari Altera, Synplicity, Synopsys dan vendor lainnya.

Jangan lupa untuk meninggalkan jejak di CATATAN PENGUNJUNG

Sumber : http://en.wikipedia.org, http://www.dmoz.org, http://www.dmoz.org, http://www.diku.dk

saya cinta Indonesia

Ditulis dalam Artikel

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

STATISTIK
  • 255,193 Kunjungan