25.1.11

kompiler adalah

kompiler adalah sebuah program komputer (atau kumpulan program) yang mengkonversi source code yang ditulis dalam bahasa pemrograman (bahasa sumber) ke dalam bahasa komputer yang lain (bahasa sasaran atau dalam bentuk biner yang disebut object code). Alasan paling umum untuk ingin kode sumber untuk program dieksekusi untuk menciptakan perubahan.

Nama "kompiler" terutama digunakan untuk program-program yang menterjemahkan kode sumber dari bahasa pemrograman tingkat tinggi ke bahasa tingkat rendah (misalnya, bahasa assembly atau kode mesin). Jika program ini dikompilasi untuk dijalankan pada CPU untuk sebuah sistem komputer atau operasi berbeda dari satu dalam jangka compiler, compiler dikenal sebagai sebuah cross compiler. Sebuah program yang menerjemahkan dari bahasa tingkat rendah ke tingkat yang lebih tinggi adalah Decompiler. Sebuah program yang menerjemahkan antara bahasa tingkat tinggi biasanya disebut penerjemah bahasa, sumber ke bahasa sumber, atau konverter bahasa. penulis biasanya bahasa program yang menerjemahkan bentuk ekspresi tanpa bahasa.

Sebuah kompiler kemungkinan akan banyak atau semua kegiatan berikut lakukan: analisis leksikal, preprocessing, analisis, analisis semantik (terjemahan Syntax-directed), pembuatan kode dan kode optimasi.

Pemrograman kesalahan yang disebabkan oleh perilaku salah compiler bisa sangat sulit untuk melacak dan bekerja di sekitar, Charmain Horn Harap dicatat, compiler pelaksana menginvestasikan banyak waktu untuk memastikan bahwa software yang benar atau mereka.

Kompiler-kompiler ekspresi kadang-kadang digunakan untuk merujuk kepada generator parser, atau program yang digunakan untuk membantu menciptakan lexer dan parser.

Sejarah
Artikel utama: Sejarah pembangunan kompilator

Software untuk komputer awal sebagian besar ditulis dalam bahasa assembly selama bertahun-tahun. tinggi tingkat bahasa pemrograman tidak ditemukan tidak dapat manfaat dari raksasa perangkat lunak dalam berbagai jenis CPU mulai biaya jauh lebih tinggi penulisan kompilator. Sangat kapasitas memori yang terbatas kematian dini memiliki komputer yang sangat masalah teknis dengan implementasi penerjemah.

Pada akhir 1950-an, adalah mesin-independen pertama bahasa pemrograman yang diusulkan. Sekali lagi, percobaan beberapa compiler dikembangkan. Penerjemah yang pertama ditulis oleh Grace Hopper pada tahun 1952, sebuah bahasa pemrograman-0. FORTRAN tim yang dipimpin oleh John Backus di IBM umumnya dikaitkan dengan pembentukan terjemahan lengkap pertama pada tahun 1957. COBOL adalah bahasa awal untuk dikompilasi pada berbagai platform pada tahun 1960 [1].

Dalam ide domain aplikasi banyak bahasa tingkat tinggi cepat tertangkap untuk menggunakan. Karena fungsi ini didukung oleh ekspansi dari bahasa pemrograman yang lebih baru dan meningkatnya kompleksitas arsitektur komputer, compiler telah menjadi semakin kompleks.

Apakah kompiler awal dalam bahasa assembly ditulis. Diri pertama-compiler hosting - adalah sendiri kode sumbernya dalam bahasa tingkat tinggi yang dikembangkan -. Tim ini diciptakan untuk Lisp oleh Hart dan Mike Levin di MIT pada tahun 1962 [2] Sejak tahun 1970-an, sebuah praktek yang umum untuk menerapkan dalam compiler bahasa yang ditetapkan, walaupun kedua Pascal dan C adalah pilihan populer untuk penerapan bahasa. Membangun diri-hosting compiler adalah sebuah kompiler masalah startup sebagai bahasa pertama harus berupa dikompilasi oleh compiler yang ditulis dalam berbagai bahasa, atau (seperti dalam Hart dan compiler Lisp Levin) disusun dengan menjalankan penyusun penerjemah.
Compiler di bidang pendidikan

Compiler konstruksi dan optimasi compiler yang diajarkan di universitas-universitas dan sekolah sebagai bagian dari kurikulum ilmu komputer. Biasanya program ini datang dengan implementasi kompiler untuk pendidikan bahasa pemrograman. Yah contoh-didokumentasikan adalah PL / 0 kompiler Niklaus Wirth, yang menggunakan konstruksi compiler Wirth pada tahun 1970 [3] untuk mengajar meskipun kesederhanaan, PL / 0 compiler melakukan sejumlah konsep berpengaruh ke lapangan.:

   1. Pengembangan program dengan perbaikan bertahap (juga judul sebuah kertas 1971 oleh Wirth [4])
   2. Menggunakan rekursif Descent Parser
   3. Penggunaan sintaks EBNF bahasa untuk mendefinisikan
   4. Sebuah generator kode menghasilkan kode portabel C
   5. Menggunakan T-chart [5] dalam deskripsi formal dari masalah Startup

Kompilasi

Compiler memungkinkan pengembangan program mesin-independen. Untuk pengembangan FORTRAN (Formula Translator), bahasa tingkat yang lebih tinggi sampai 1950, secara luas perakitan mesin-tergantung bahasa yang digunakan. Sedangkan program bahasa assembly yang dihasilkan kode mesin yang lebih dapat digunakan kembali dan dipindahkan sebagai arsitektur yang sama, harus diubah atau ditulis ulang jika program dijalankan pada arsitektur hardware yang berbeda.

Dengan kemajuan dalam bahasa pemrograman tingkat tinggi diikuti segera setelah FORTRAN, COBOL, seperti program-program seperti C, BASIC, programmer dapat sumber independen mesin-menulis. Sebuah kompiler menerjemahkan tingkat tinggi sumber program ke dalam aplikasi target dalam bahasa mesin untuk perangkat keras tertentu. Setelah target program dihasilkan, pengguna dapat program.
 Struktur kompilator

Compiler jembatan program sumber dalam bahasa tingkat tinggi dengan perangkat keras yang mendasarinya. Penulis akan meminta) Menentukan kebenaran sintaks program, 2) menghasilkan akurat dan efisien kode obyek, 3) organisasi run-time, dan 4) format output sesuai dengan perakitan dan / atau Konvensi di sebelah kiri. penyusun terdiri dari tiga bagian utama: bagian depan, tengah dan akhir kembali.

Pengecekan ujung depan, program ini benar-benar ditulis dalam hal sintaks dan semantik bahasa pemrograman. Allah program dihormati legal dan ilegal. Kesalahan dilaporkan, jika ada, dengan cara yang bermanfaat. Jenis kontrol meninggal Dilakukan dengan mengumpulkan informasi mengenai jenis. Depan dan kemudian menghasilkan representasi intermediate, atau IR atau kode sumber untuk proses tengah-akhir.

Titik pusat adalah "di mana optimasi yang terjadi Transformasi biasanya untuk mengoptimalkan penghapusan tidak berguna atau tidak bisa. Dihubungi, penemuan kode dan nilai-nilai konstanta propagasi, relokasi atau perhitungan ke misalnya lebih jarang dilakukan ( dari loop), atau spesialisasi atau perhitungan berdasarkan konteks Mid-end untuk menghasilkan lain untuk IR belakang berikut .. kebijakan optimasi Sebagian besar berurusan dengan bagian ini.

Bertanggung jawab untuk terjemahan belakang kode assembly IR produk akhir. Penempatan target (s) dipilih untuk setiap instruksi IR. Variabel yang dipilih untuk catatan dikonversi. Hardware belakang untuk mengetahui bagaimana FUS paralel sibuk untuk tetap mengisi slot delay, dan banyak lagi. Meskipun sebagian besar algoritma untuk optimasi di NP, teknik heuristik yang dikembangkan dengan baik.
output Kompilator

Salah satu penulis pada klasifikasi platform di mana mereka menjalankan kode yang dihasilkan. Ini dikenal sebagai platform sasaran.

Host kompiler yang asli atau keluaran dirancang untuk langsung menjalankan jenis yang sama dari komputer dan sistem operasi yang compiler itu sendiri berjalan pada. Melakukan cross compiler dirancang untuk platform yang berbeda. Cross compiler digunakan dalam pengembangan perangkat lunak untuk embedded system yang tidak dimaksudkan lingkungan pengembangan perangkat lunak untuk mendukung.

Pelaksana seorang penerjemah yang menghasilkan kode untuk sebuah mesin virtual (VM) mungkin atau mungkin tidak pada platform yang sama dengan sebuah compiler yang menyebabkannya. Untuk alasan ini, compiler biasanya tidak diklasifikasikan sebagai compiler asli atau silang.
 Disusun versus ditafsirkan bahasa

Lebih tinggi tingkat bahasa pemrograman untuk kenyamanan masyarakat dibagi dalam bahasa dikompilasi dan bahasa diinterpretasikan. Tapi dalam prakteknya jarang ada apa-apa tentang bahasa yang menuntut hal itu Eksklusif Eksklusif dikompilasi atau ditafsirkan, meskipun kemungkinan interpretasi-ulang dari bahasa bergantung pada waktu yang sedang berjalan untuk merancang. Klasifikasi ini biasanya mencerminkan pelaksanaan bahasa yang paling populer atau luas - misalnya, kadang-kadang disebut diinterpretasikan bahasa Basic, dan C disusun Walaupun keberadaan compiler BASIC dan C penerjemah,.

modern kecenderungan menuju kompilasi just-in-time dan interpretasi bytecode pada saat compiler kategorisasi tradisional kabur dan penerjemah.

Beberapa spesifikasi bahasa mengatakan bahwa menerapkan fasilitas kombinasi, misalnya, Common Lisp harus dimasukkan. Tapi tidak ada yang melekat dalam definisi Lisp umum yang berhenti untuk menafsirkannya. Bahasa lain memiliki fitur yang sangat mudah untuk diterapkan dalam compiler, tetapi sulit untuk membuat tulisan compiler, misalnya, APL, SNOBOL4, dan bahasa scripting banyak membiarkan kode program acak sumber untuk membangun pada saat runtime dengan operasi string biasa, dan kemudian menjalankan kode dengan Skip untuk fungsi evaluasi yang spesifik. Untuk melaksanakan fungsi ini dalam bahasa dikompilasi, program biasanya harus dikirim ke perpustakaan juga runtime versi dari kompiler itu sendiri.
 komposisi Hardware

Ekspor berbagai penulis dalam target perangkat Mei di tingkat yang sangat rendah, seperti Field Programmable Gate Array (FPGA) atau aplikasi yang terstruktur sirkuit terpadu spesifik (ASIC). kompiler dikatakan hardware sintesis compiler atau alat karena kode sumber kompilasi Mereka efektif mengontrol konfigurasi akhir dari hardware dan cara kerjanya, output dari kompilasi tidak instruksi dieksekusi dalam urutan - hanya interkoneksi transistor atau tabel pencarian . Sebagai contoh, Xilinx alat sintesis xst digunakan untuk konfigurasi FPGA. alat-alat serupa yang tersedia dari Altera, Synplicity, Synopsys dan vendor lainnya.

0 comments:

Post a Comment