Tugas Teknik Kompilasi 1

Compiler adalah program (atau kumpulan program) yang mengubah source code bahasa pemrograman (source code) menjadi bahasa target. Bahasa target dapat berupa bahasa assembly, bahasa mesin ataupun bahasa lain.

Proses compiling yang paling  umum adalah mengubah bahasa tingkat tinggi (C#,C++, Pascal, dsb) menjadi bahasa yang dapat dimengerti komputer biasanya dalam bentuk binary. Tujuan utama yang paling umum dari konversi bahasa ini adalah untuk menghasilkan file exe (executable program).

Pada eksekusinya pada proses konversi bahasa ini dapat terjadi kesalahan, compiler akan memberikan error messages jika menemukan kesalahan.

Untitled2

Tahapan dari Source Code menjadi bahasa mesin (binary/ exe files)

Source program
preprocessing ¯
Source program
compiling ¯
Assembly program
assembling ¯
Machine instructions
linking ¯
Executable code
•Preprocessing
– proses mengolah input berupa source code menjadi data lain yang digunakan sebagai input untuk proses berikutnya. Juga bertanggung jawab untuk mengolah macro, menginclude header file, dan language extensions (menggabungkan kode dengan tambahan pada built-in macros).
•Compiling
Proses mengubah source code dari tahap preprocessing menjadi bahasa assembly  .
•Assembling
Mengubah bahasa yang dihasilkan dari tahap compiling menjadi bahasa yang dimengerti mesin (binary code) tanpa memory addressing.
•Linking
Proses menghubungkan binary code dengan library atau binary code lainnya untuk menghasilkan absolute machine code, termasuk juga menambahkan runtime library yang terdiri dari rutin memory management.
Fase-fase pada proses kompilasi:
• Fase Analisis
  1. Lexical analysis (scanning): source teks dipisah-pisah  menjadi token-token.
  2. Syntactic analysis (parsing): token-token dikombinasikan menjadi struktur sintatis, direpresentasikan dengan parse tree.
  3. Semantic analysis : kode intermediate (intermediate code) dihasilkan untuk setiap struktur sintatis. Type checking dilakukan pada fase ini. Fitur-fitur seperti generic declaration dan operator overloading juga diproses.

• Fase Sintesis

4. Machine-independent optimization: kode intermediate (intermedidate code) dioptimasi untuk meningkatkan efisiensi

5. Code generation : kode intermediate (intermediate code) diterjemahkan menjadi relocatable object code (binary) untuk target machine.
6. Machine-dependent optimization : machine code yang telah dihasilkan dioptimasi lagi.

•Symbol table manager
– Membuat record dari identifier yang digunakan dalam source code dan mengoleksi atribut-atribut yang berhubungan antar tiap identifier.
•Error Handler
– Menghandle dan melaporkan error yang terjadi untuk kemudian diberikan feedback error messages.
Contoh Translasi:
UntitledUntitled2
Untitled2 Untitled2
Compiler Construction Tools
•Parser Generator
– tools yang berguna untuk menghasilkan parser (syntax analyzer) dari input-based CFG (Context Free Grammar).
•Scanner Generator
– tools yang menghasilakan lexical analyzer (scanner) berdasarkan spesifikasi regular expression (RE)
•Syntax Directed translation Engine
– tools yang menghasilkan kumpulan rutin-rutin yang dapat berjalan (run) pada parse tree dan menghasilkan intermedite code.
•Automatic Code Generator
–tools yang berguna untuk mengambil kumpulan aturan yang mendefinisikan perubahan dari tiap operasi dari intermediate language menjadi  bahasa mesin pada target machine.
•Data Flow Engine
–tools yang berguna untuk mengumpulkan informasi mengenai bagaimana value ditransmisikan dari suatu bagian dari program ke program lainnya, berguna untuk data flow analysis pada tahap optimisasi kode.
====================================================

reference : http://en.wikipedia.org/wiki/Compiler

http://www.augustana.ca/~jmohr/courses/common/csc370/lecture_notes/compilation.html

http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora065.html

Backlink : www.binus.ac.id.

 

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *