Anda di halaman 1dari 23

Pendahuluan 1

PERTEMUAN 1

PENGANTAR TEKNIK
KOMPILASI
PENDAHULUAN

Tujuan Pembelajaran :
1. Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler.
2. Mahasiswa memahami konsep pembuatan sebuah Compiler.
3. Mahasiswa mengetahui bagaimana sebuah bahasa pemrograman dapat diterjemahkan
oleh mesin.

Metari Pembelajaran
1. Bentuk-bentuk karakter dan kelas Grammar.
2. Ekspresi Regular dan Automata.
3. Analisa Leksikal sebagai tahap awal kompilasi.
4. Analisa Sintaks, bentuk-bentuk derivasi serta implementasi parsing.
5. Analisa Semantik dan tahapan Sintesa.
6. Penanganan kesalahan kompilasi dan fungsi tabel informasi.
SILABUS PERKULIAHAN

1) Pengantar Teknik Kompilasi


2) Bahasa Sumber
3) Konsep Pemrograman
4) Lexical Analysis
5) Analysis Syntax
6) Analysis Semantics
7) Kode Antara (Intermediate Code)
8) Pembangkit Kode (Code Generator)
9) Error Handling
10) Teknik Optimasi
11) Tabel informasi
TEKNIK KOMPILASI?

• Teknik :
• Metode atau Cara

• Kompilasi :
• Proses mengabungkan serta menterjermahkan sesuatu
(source program) menjadi bentuk lain

• Compile :
• To translate a program written in a high-level
programming language into machine language.
Translator : Compiler & Interpreter

Translator :
• Adalah suatu program dimana mengambil input sebuah program
yang ditulis pada satu bahasa program (source language) ke bahasa
lain (The object on target language)

• Jika source language adalah high level language, seperti cobol,


pascal, fortran maka object language adalah low-level language atau
mesin language. Translator seperti ini disebut COMPILER

5
Pendahuluan
Kenapa perlu Translator ?

• Dengan bahasa mesin adalah bahasa bentuk bahasa


terendah komputer, berhubungan langsung dengan bagian
bagian komputer seperti bits, register & sangat primitive
• Jawaban atas pertanyaan ini akan membingungkan bagi
programmer yang membuat program dengan bahasa mesin.
• Bahasa mesin adalah tidak lebih dari urutan 0 dan 1
• Instruksi dalam bahasa mesin bisa saja dibentuk menjadi
micro-code, semacam prosedur dalam bahasa mesin
• Bagaimana dengan orang tidak mengerti bahasa mesin
Ada Beberapa Translator

1. Assembler
Source code adalah bahasa assembly, Object code
adalah bahasa mesin

Object
Objectcode
code
*.asm
*.asm Assembler
Assembler *.exe
*.exe/*.com
/*.com

2. Compiler
Source code adalah bahasa tingkat tinggi, object code
adalah bahasa mesin atau bahasa assembly. Source
code dan data diproses berbeda
Data
Data

Source
Source Compile Execution
Execution Hasil
code Compilerr Hasil
code

Object
ObjectCode
Code

3. Interpreter
Interpreter tidak menghasilkan bentuk object code, tetapi
hasil translasinya hanya dalam bentuk internal, dimana
program induk harus selalu ada-berbeda dengan compiler
Source
Sourcecode
code
Translator Hasil
Hasil
Translator
Data
Data
Translator : Compiler & Interpreter

Source OBJECT
Compiler
Program PROGRAM

ERROR
MESSAGES
COMPILER VS INTERPRETER

• Compiler bisa menangkap berbagai kesalahan dalam 1 program


kode sumber secara sekaligus. Kalau Interpreter cuma bisa
menangkap beberapa kesalahan pada 1 baris kode sumber pada
suatu saat

• Biasanya program yang dihasilkan compiler lebih cepat dari waktu


pelaksanaan program dengan interpreter.

• Kalau compiler menghasilkan kode antara (misal object code) dan


harus digabungkan / dilink menjadi bentuk yang dapat dijalankan
mesin / komputer (executable). Kalau Interpreter biasanya tidak
menghasilkan kode antara.

• Kalau hendak menjalankan program hasil kompilasi bisa dilakukan


tanpa kode sumber. Kalau interpreter butuh kode sumber.
COMPILER VS INTERPRETER

• Kalau dengan kompiler, maka pembuatan kode yang bisa dijalankan mesin
dilakukan dalam 2 tahap terpisah, yaitu parsing / pembuatan kode objek dan
linking / penggabungan kode objek dengan library. Kalau interpreter tidak ada
proses terpisah.

• Kalau compiler membutuhkan linker untuk menggabungkan kode objek dengan


berbagai macam library demi menghasilkan suatu kode yang bisa dijalankan oleh
mesin. Kalau interpreter tidak butuh linker.

• Interpreter cocok untuk membuat / menguji coba modul / sub-routine / program-


program kecil. Kalau compiler agak repot karena untuk mengubah suatu modul /
kode objek kecil, maka harus dilakukan proses linking / penggabungan kembali
semua objek dengan library yang diperlukan.

• Pada kompiler bisa dilakukan optimisasi / peningkatan kwalitas kode yang bisa
dijalankan. Ada yang dioptimasi supaya lebih cepat, ada yang supaya lebih kecil,
ada yang dioptimasi untuk sistem dengan banyak processor. Kalau interpreter
susah / tidak bisa dioptimasikan.
PROSES KOMPILASI DIKELOMPOKKAN KE
DALAM DUA KELOMPOK BESAR :

1. analisa : program sumber dipecah-pecah


dan dibentuk menjadi bentuk antara
(inter-mediate representation)
2. sintesa : membangun program sasaran
yang diinginkan dari bentuk antara
FASE-FASE PROSES SEBUAH KOMPILASI
BAHASA PERMROGRAMAN
1. Bahasa Pemrograman

Bahasa
mesin
Bahasa
Assembly

Bahasa
Pemrograman
Bahasa
Tingkat tinggi

Bahasa
Problem Oriented

14
Pendahuluan
PROGRAM LANGUAGE

Bahasa tingkat tinggi


Bahasa mesin merupakan bentuk
(user oriented) lebih
terendah dari bahasa komputer.
banyak memberikan fungsi
Instruksi direpresentasikan dalam
kontrol program, kalang,
kode numerik.
block, dan prosedur.

Program
Language

Bahasa problem oriented


Bahasa Assembly merupakan bentuk sering juga dimasukkan sebagai
simbolik dari bahasa mesin. Kode bahasa tingkat tinggi,
misalnya ADD, MUL, dsb misalnya SQL, Myob, dsb.

15
Pendahuluan
TRANSLATOR

2. Translator
Translator melakukan pengubahan source code / source program kedalam target code / object code

Interpreter dan Compiler termasuk dalam kategori translator.

Interpreter

 Tidak membangkitkan object code.


Translator  Source code dan data diproses
bersamaan.
 Contoh: BASICA, SPSS, DBASE III.
Assembler
Compiler

 Source Code adalah bahasa tingkat tinggi.  Source Code adalah bahasa
 Assembly
Object Code adalah bahasa mesin atau
assembly.  Object Code adalah bahasa mesin.
 Source code dan data diproses tidak bersamaan.  Contoh: Turbo Assembler.
16
Pendahuluan  Contoh: PASCAL, C.
INTERPRETER

Penanganan
Kesalahan

Program Analisa Analisa Intermediate Hasil


Sumber Interpretasi Operasi
Leksikal Sintaks Program

Pengelolaan
Tabel

17
Pendahuluan
ASSEMBLER

Assembler

File
Source Assembler Lingker
Object Code Target
Code

.ASM .OBJ .EXE / .COM

Proses Sebuah Kompilasi pada


Bahasa Assembler

• Source Code adalah bahasa Assembler, Object Code adalah bahasa Mesin.
• Object Code dapat berupa file object (.OBJ), file .EXE, atau file .COM
• Contoh : Turbo Assembler (dari IBM) dan Macro Assembler (dari Microsoft).

18
Pendahuluan
COMPILER

Compiler
Definisi : Kompilator (compiler) adalah sebuah program yang membaca suatu program yang ditulis
Dalam suatu bahasa sumber (source language) dan menterjemahkannya kedalam suatu
bahasa sasaran (target language).
Proses kompilasi dapat digambarkan melalui sebuah blok diagram sebagai berikut :

Program sumber Compiler Bahasa sasaran

Pesan-pesan kesalahan
(error messages)

Proses Kompilasi dikelompokkan kedalam dua kelompok besar :


1. Analisa : Program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (Intermediate
Representation ).
2. Sintesa : Membangun program sasaran yang diinginkan dari bentuk antara.

19
Pendahuluan
BLOK DIAGRAM

Blok Diagram

Program
Program Program
Program
Sumber
Sumber Sasaran
Sasaran

ANALISA SINTESA
Penganalisa
Penganalisa Penganalisa Semantik Pembentuk Pengoptimal
Leksikal Sintaks Pembangkit kode kode
(scanner) (parser) Kode antara

TABEL
TABEL
SIMBOL
SIMBOL

Bagan pokok proses kompilasi

20
Pendahuluan
KETERANGAN

Keterangan

1. Program Sumber ditulis dalam bahasa sumber, misal Pascal, Assembler, dsb.
2. Program Sasaran dapat berupa bahasa pemrograman lain atau bahasa mesin pada
suatu komputer.

3. Scanner : Memecah program sumber menjadi besaran leksik/token.


4. Parser : Memeriksa kebenaran dan urutan kemunculan token.
5. Penganalisa semantik : Melakukan analisa semantik, biasanya dalam realisasi akan
digabungkan Dengan intermediate code generator (bagian yang berfungsi
membangkitkan kode antara).
6. Pembentuk Kode : Membangkitkan kode objek
7. Pengoptimal Kode : Memperkecil hasil dan mempercepat proses.
8. Tabel : Menyimpan semua informasi yang berhubungan dengan proses kompilasi.

21
Pendahuluan
SOURCE CODE

Library Object
Code
Source Object
Code 1 Compiler 1
Code 1
Source Object
Code 2 Compiler 2
Code 2
Lingker Executable

Source Object
Code n Compiler n
Code n

• Pembentukan file Executable berdasar dari beberapa Source Code.


• Source Code dapat terdiri dari satu atau lebih behasa pemrograman.

22
Pendahuluan
PEMBUATAN COMPILER

Pembuatan Compiler

Pembuatan kompilator dapat dilakukan dengan :

1. Bahasa Mesin
Tingkat kesulitannya tinggi, bahkan hampir mustahil dilakukan.

2. Bahasa Assembly
Bahasa Assembly bisa dan biasa digunakan sebagai tahap awal pada proses pembuatan
sebuah kompilator.

3. Bahasa Tingkat Tinggi lain pada mesin yang sama


Proses pembuatan kopilator akan lebih mudah.

4. Bahasa tingkat tinggi yang sama pada mesin yang berbeda


Misal, pembuatan kompilator C untuk DOS, berdasar C pada UNIX.

5. Bootstrap
Pembuatan kompilator secara bertingkat.

23
Pendahuluan

Anda mungkin juga menyukai