LAPORAN PRAKTIKUM 1 TEKNIK KOMPILASI DI SUSUN OLEH : ADITYA TUNGGAL PRAKOSO 3201216005 PRODI TEKNIK INFORMATIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI PONTIANAK TAHUN 2015
LAPORAN PRAKTIKUM 1
TEKNIK KOMPILASI
DI SUSUN OLEH :
ADITYA TUNGGAL PRAKOSO
3201216005
PRODI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI PONTIANAK
TAHUN 2015
BAB 1
TEORI PRAKTIKUM
A. BAHASA PEMOGRAMAN
Bahasa pemrograman, atau sering diistilahkan juga dengan bahasa komputer atau
bahasa pemrograman komputer, adalah instruksi standar untuk memerintah komputer.
Bahasa pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantik
yang dipakai untuk mendefinisikan program komputer.
Menurut tingkat kedekatannya dengan mesin komputer, bahasa pemrograman
terdiri dari:
1. Bahasa Mesin, yaitu memberikan perintah kepada komputer dengan memakai
kode bahasa biner, contohnya 01100101100110
2. Bahasa Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bah.Inggris
Assembly), yaitu memberikan perintah kepada komputer dengan memakai kode-
kode singkat (kode mnemonic), contohnya [kode_mesin|MOV], SUB, CMP,
JMP, JGE, JL, LOOP, dsb.
3. Bahasa Tingkat Menengah, yaitu bahasa komputer yang memakai campuran
instruksi dalam kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di
bawah) dan instruksi yang bersifat simbolik, contohnya {, }, ?, <<, >>, &&, ||,
dsb.
4. Bahasa Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal
dari unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or,
dsb. Komputer dapat mengerti bahasa manusia itu diperlukan program compiler
atau interpreter.
B. COMPILER
Kompilator (Inggris: 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.
Terlepas dari pengertiannya yang demikian relatif luas, istilah kompilator biasa
digunakan untuk program komputer yang menerjemahkan program yang ditulis dalam
bahasa pemrograman tingkat tinggi (semacam bahasa Pascal, C++, BASIC,
FORTRAN, Visual Basic, Visual C#, Java, xBase, atau COBOL) menjadi bahasa
mesin, biasanya dengan bahasa Assembly sebagai perantara.
Kompilator melakukan proses kompilasi dengan cara menganalisis kode sumber
secara keseluruhan, sehingga waktu yang dibutuhkan untuk melakukan kompilasi lebih
lama, namun hasilnya lebih cepat dalam proses eksekusi daripada program yang dibuat
dengan menggunakan teknik interpretasi dengan interpreter.
C. INTERPRETER
Dalam ilmu komputer, penerjemah atau lebih dikenal dengan interpreter
merupakan perangkat lunak yang berfungsi melakukan eksekusi sejumlah instruksi
yang ditulis dalam suatu bahasa pemrograman, sebuah penerjemah dapat berarti:
1. Mengeksekusi kode sumber secara langsung, atau
2. Menerjemahkannya ke dalam serangkaian p-code kemudian
mengeksekusinya
3. Mengeksekusi kode yang telah dikompilasi sebelumnya oleh kompiler
yang merupakan bagian dari sistem penerjemahan.
Perl, Python, Ruby, dan MATLAB adalah beberapa contoh perangkat lunak
penerjemah bertipe 2, sementara Java termasuk dalam kategori tipe 3, namun dalam
beberapa kasus Java dapat digolongkan pula ke dalam kategori tipe 2.
Meskipun penerjemahan dan kompilasi merupakan dua jenis mekanisme
implementasi pada sebuah bahasa pemrograman, keduanya tidak berarti memiliki
perbedaan secara signifikan. Hal ini disebabkan cara kerja sebuah penerjemah dalam
banyak hal adalah sama seperti halnya yang dilakukan oleh kompiler. Penggunaan
istilah "bahasa pemrograman terjemahan" dan "bahasa pemrograman kompilatif"
umumnya digunakan sebatas untuk membedakan implementasi dari bahasa tersebut
menggunakan model penerjemahan atau kompilatif.
D. PERBEDAAN COMPILER DAN INTERPRETER
1. Jika hendak menjalankan program hasil kompilasi dapat dilakukan tanpa butuh
kode sumber. Kalau interpreter butuh kode sumber.
2. Jika 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.
3. Jika 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 untuk menggabungkan kode objek
dengan berbagai macam library.
4. Interpreter cocok untuk membuat / menguji coba modul ( sub-routine / program-
program kecil ). Maka compiler agak repot karena untuk mengubah suatu modul /
kode objek kecil, maka harus dilakukan proses linking / penggabungan kembali
semua objek dengan library yang diperlukan.
5. Pada kompiler bisa dilakukan optimisasi / peningkatan kualitas 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 atau bahkan tidak bisa dioptimasikan.
E. PROSES KOMPILASI
Contoh Proses Kompilasi Pada Bahasa C :
Program sumber
Analisis leksikal
Analisis sintaktik
Analisis semantik
Intermediate code generator
Optimasi kode
Penghasil kode
Program sasaran
Tabel Simbol Error handler
BAB 2
PEMBAHASAN PRAKTIKUM
A. Instalasi Cygwin Pada PC
1. Pastikan anda mempunyai file instalasi Cygwin. Jika anda belum mempunyai file
instalasinya, silahkan download pada website : https://cygwin.com/install.html
Pilih file setup sesuai dengan arsitektur processor anda. Jika sistem anda berjalan
pada sistem 32-bit maka download file setup-x86.exe
2. Buka file instalasi yang telah anda download.
3. Setelah tampilan instalasi terbuka, Klik Next untuk melanjutkan proses instalasi.
4. Jika anda belum memiliki package Cygwin yang diperlukan, maka pilih “Install
From Internet”, tetapi jika anda sudah memiliki file package, maka pilih “Install
from Local Directory”. Pada contoh ini, saya menggunakan pilihan “Install from
Internet”.
5. Pilih direktori untuk menyimpan aplikasi Cygwin dan Klik Next untuk melanjutkan
proses instalasi.
6. Pilih direktori untuk menyimpan file Package dari Cygwin, dan Klik Next untuk
melanjutkan proses instalasi.
7. Pilih “Direct Connection” untuk koneksi internetnya.
8. Pilih lokasi server download yang diinginkan. Pada contoh ini, saya menggunakan
pilihan pertama. Klik Next untuk melanjutkan proses instalasi.
9. Tunggu proses download file hingga selesai. Setelah selesai maka akan keluar
tampilan untuk memilih package yang akan di download. Ketik “gcc” pada kolom
Search, dan pilih package “gcc-core” dan “gcc-g++”. Klik Next untuk melanjutkan
proses instalasi.
10. Proses download package akan berjalan. Silahkan tunggu hingga selesai.
B. Proses Kompilasi Source Code File C Pada Aplikasi Cygwin
1. Buka Aplikasi Cygwin pada komputer anda.
2. Untuk memastikan package gcc dan g++ telah terinstal pada cygwin, ketikan
perintah seperti gambar dibawah.
3. Untuk memulai proses kompilasi, siapkan sebuah file dengan bahasa c. Contoh
program sederhananya dapat dilihat pada gambar dibawah.
Simpan file tersebut dengan nama “hello.c” pada direktori yang anda inginkan.
4. Buka kembali aplikasi Cygwin, dan pindahkan direktorinya pada direktori tempat
penyimpanan file yang telah anda buat sebelumnya.
Untuk berpindah direktori, gunakan perintah “cd” dan arahkan pada direktori yang
anda inginkan. Untuk melihat isi direktori, gunakan perintah “ls”.
5. Tahap pertama dalam kompilasi, adalah proses Pre-Processing, yang akan
mengubah file source code awal menjadi file yang akan di expand bersama header-
nya. Untuk memulai proses, silahkan ketikan kode seperti contoh di bawah.
Proses ini akan menghasilkan sebuah file baru dengan nama “hello.i”
6. Tahap kedua adalah mengubah kode yang sudah diproses sebelumnya menjadi kode
assembly. Ketikan perintah seperti gambar di bawah.
Proses ini akan menghasilkan sebuah file baru dengan nama “hello.s”
7. Tahap ketiga adalah proses mengubah kode assembly menjadi kode mesin.
Perintahnya dapat dilihat pada gambar dibawah.
File yang telah dirubah akan menjadi file objek dengan nama “hello.o”
8. Tahap keempat adalah menghubungkan file objek tadi dengan library yang
dibutuhkan untuk menghasilkan file berekstensi .exe.
Perintah umumnya adalah : “ld -o hello.exe hello.o ...libraries....” , Namun karena
kita tidak mengetahui library yang dibutuhkan maka proses akan berlangsung
seperti gambar di bawah ini.
9. Langkah – langkah di atas adalah proses untuk mengkompilasi file dengan tahapan
– tahapan sederhana, untuk melihat hasil file exe secara langsung tanpa mengetikan
library code seperti diatas, masukan perintah seperti gambar di bawah.
Proses telah selesai, dan hasil dari file hello.c telah berubah menjadi executable file
dengan nama hello.exe.
BAB 3
KESIMPULAN PRAKTIKUM
Berdasarkan Praktikum yang telah dilakukan, maka di hasilkan kesimpulan sebagai berikut :
1. Proses Kompilasi File C terdiri dari 4 tahapan, yaitu proses PreProcessing, Compiling,
Assemble, dan Linking.
2. Proses PreProcessing akan mengubah file source code awal menjadi file yang akan di
expand bersama header-nya dan akan menghasilkan file dengan ekstensi “.i”
3. Proses Compiling akan mengubah file dengan ekstensi “.i” menjadi kode assembly.
4. Proses Assemble akan mengubah kode assembly menjadi kode mesin dan akan
menghasilkan file objek yang berekstensi “.o”
5. Proses Linking merupakan proses untuk merubah file objek menjadi file .exe dengan
menghubungkan file objek tersebut dengan file library yang dibutuhkan.