Anda di halaman 1dari 15

KOMPILASI DAN BAHASA ASSEMBLY

INTERPRETER DAN EKSEKUSI

DISUSUN OLEH :

I KADEK TEO PRAYOGA KARTIKA 1504505086

I KETUT WAHYU ARIPRASASMITA 1504505088

FIRKY ARDIAN W 1504505087

R.E ASI ARMANDO DAMANIK 1504505098

PROGRAM STUDI TEKNOLOGI INFORMASI


FAKULTAS TEKNIK
UNIVERSITAS UDAYANA
2015
KATA PENGANTAR

Puji syukur kami panjatkan atas berkat dan rahmat Tuhan Yang Maha Esa,
maka kami bisa menyelesaikan tugas modul yang berjudul “Kompilasi
dan Bahasa Assembly” dan “Interpreter dan Eksekusi” dengan harapan
semoga makalah ini bisa bermanfaat dan menjadi referensi bagi para
pembaca sehingga mengetahui materi tentang Kompilasi, Bahasa
Assembly, Interpreter, dan Eksekusi .
Modul ini sepenuhnya belum sempurna, dan untuk menjadi lebih
sempurna kami sangat membutuhkan dan mengharapkan masukan dari pihak lain,
yang dapat berupa kritik, saran maupun pesan.
Kepada semua pihak yang telah membaca modul ini , kami ucapkan
banyak terima kasih.

Denpasar, 10 Oktober 2015

Penyusun

2
DAFTAR ISI

Kata Pengantar…………………………………………………….. 2
Daftar Isi
BAb I Pendahuluan……………………………………………… 3
1.1 Tujuan…………………………………………………. 3
BAB II Materi
I. Definisi Kompilasi………………………………… 5
II. Bagian- Bagian Kompilasi………………………… 5
III. Macam- Macam Translator………………………... 5
IV. Analisa…………………………………………….. 6
V. Sintesa……………………………………………... 7
VI. Bahasa Assembly…………………………………. 8
VII. Bagian- bagian dari program assembler………….. 8
VIII. Interpreter…………………………………………. 10
IX. Alur Kerja Interpreter……………………………... 11
X. Perbedaan antara Compiler dengan………………. 11
XI. Eksekusi…………………………………………… 12
XII. Contoh Ekseskusi…………………………………. 13
BAB III PENUTUP………………………………………………... 14
A. KESIMPULAN………………………………………... 14
DAFTAR PUSTAKA……………………………………………… 15

3
BAB I
PENDAHULUAN

1.1 Tujuan Pembelajaran:


- Mengetahui Penerapan konsep ilmu komputer pada perilaku komputer
yaitu algoritma, arsitektur komputer, stuktur data maupun penerapan teori
bahasa dan automata
- Pembaca mengetahui bahasa assembly
- Compiler adalah merupakan konstruksi inti dari ilmu computer.
- Mengetahui perlunya waktu eksekusi dalam penyusunan algoritma
- Mengetahui Interpreter
- Mengetahui perbedaan interpreter dengan compiler

4
BAB II
MATERI

KOMPILASI

Kompilasi adalah suatu proses mengabungkan serta menterjemahkan


sesuatu ( source program ) menjadi bentuk lain.
Untuk menggabungkan serta menterjemahkan source program membutuhkan:
 Compiler dan Translator
 Compiler adalah untuk menerjemahkan program yang ditulis dalam bahasa
pemrograman tingkat tinggi ke bahasa mesin.
 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.
 Macam – macam Translator
1. Assembler
2. Compiler
3. Interpreter

Compiler adalah suatu program yang menerjemahkan bahasa program ( source


code) kedalam bahasa objek (obyek code). Compiler menggabungkan keseluruhan
bahasa program, mengumpulkannya dan kemudian menyusunnya kembali.

5
Kompiler memerlukan waktu untuk membuat suatu program dapat di eksekusi
oleh computer, program yang dieksekusi oleh compiler adalah dapat berjalan lebih
cepat disbanding program yang diperoduksi oleh interpreter, disamping itu juga
bersifat independen. Contoh program yang menggunakan compiler adalah Visual
Basic, Visual Delvi, dan Pascal.
Keuntungannya, proses eksekusi dapat berjalan dengan cepat, sebab tak ada
lagi proses penerjemahan. Disamping itu, program sumber bisa dirahasikan, sebab
yang dieksekusi adalah program yang sudah dalam bentuk kode mesin.
Sedangkan kelemahannya, proses pembuatan dan pengujian membutuhkan
waktu relatif lebih lama, sebab ada waktu untuk mengkompilasi (menerjemahkan)
ada pula waktu melakukan proses linking. Perlu diketahui, program akan berhasil
dikompilasi hanya jika program tak mengandung kesalahan secara kaidah sama
sekali.

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

ANALISA.
 Penganalisa Leksikal ( Scanner ).
membaca program sumber, karakter demi karakter. Sederetan (satu atau lebih)
karakter dikelompokkan menjadi satu kesatuan mengacu kepada pola kesatuan
kelompok karakter (token) yang ditentukan dalam bahasa sumber. Kelompok

6
karakter yang membentuk sebuah token dinamakan lexeme untuk token tersebut.
Setiap token yang dihasilkan disimpan di dalam tabel simbol. Sederetan karakter
yang tidak mengikuti pola token akan dilaporkan sebagai token tak dikenal
(unidentified token)
 Penganalisa Sintaks ( Parser ).
memeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan
dalam bahasa sumber. Sederetan token yang tidak mengikuti aturan sintaks akan
dilaporkan sebagai kesalahan sintaks (sintax error). Secara logika deretan token
yang bersesuaian dengan sintaks tertentu akan dinyatakan sebagai pohon parsing
(parse tree).
 Penganalisa Semantik
memeriksa token dan ekspresi dari batasan-batasan yang ditetapkan. Batasan-
batasan tersebut misalnya :
- panjang maksimum token identifier adalah 8 karakter
- panjang maksimum ekspresi tunggal adalah 80 karakter, dan lain- lain.
 Pembangkit Kode Antara
membangkitkan kode antara (intermediate code) berdasar-kan pohon parsing.
Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan
penerjemah berdasarkan sintak (syntax-directed translator). Hasil penerjemahan
ini biasanya merupakan perintah tiga alamat (three-address code) yang merupakan
representasi program untuk suatu mesin abstrak. Perintah tiga alamat bisa
berbentuk quadruples (op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresi
dengan satu argumen dinyatakan dengan menetapkan arg2 dengan – (strip, dash)

SINTESA.
 Pengoptimal kode
melakukan optimasi (penghematan space dan waktu komputasi), jika mungkin,
terhadap kode antara
 Pembangkit Kode Mesin
membangkitkan kode dalam bahasa target tertentu (misalnya bahasa mesin)

7
BAHASA ASSEMBLY

Source code adalah bahasa assembly, Object code adalah bahasa mesin

Bahasa assembly adalah sebuah program yang terdiri dari instruksi-instruksi


yang menggantikan kode-kode biner dari bahasa mesin dengan “mnemonik” yang
mudah diingat. Misalnya sebuah instruksi penambahan dalam bahasa mesin
dengan kode “10110011” yang dalam bahasa assembly dapat dibuat dalam
instruksi mnemonik ADD, sehingga mudah diingat dibandingkan dengan angka 0
dan 1, dalam setiap instruksi membutuhkan suatu operand baik berupa data
langsung maupun suatu lokasi memori yang menyimpan data yang bersangkutan.
Bahasa assembly sering juga disebut kode sumber atau kode simbolik yang tidak
dapat dijalankan oleh prosesor, sedangkan assembler adalah suatu program yang
dapat menerjemahkan program bahasa assembly ke program bahasa mesin. bahasa
mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan
oleh komputer. Program bahasa mesin sering disebut sebagai kode objek.

Bagian- bagian dari program assembler:


 Label merupakan suatu simbol yang didefinisikan sendiri oleh pembuat
program untuk menandai lokasi memori pada area program. Simbol dan
label adalah dua hal yang berbeda. Simbol tidak menggunakan titik dua,
sedangkan label harus diakhiri dengan titik dua.

8
Dalam satu baris hanya ada satu label, pada umumnya Assembler membatasi
jumlah karakter yang bisa digunakan hingga 31 karakter.
 Mnemonic instruksi atau pengarah Assembler dimasukan dalam
“Mnemonic field” yang mengikuti “label mnemonic”. Mnemonic instruksi
misalnya ADD, MOV, INC dan lain-lain.Sedangkan pengarah Assembler
misalnya ORG, EQU, DB dan lain-lain.
 Operand ditulis setelah mnemonic, bisa berupa alamat atau data yang
digunakan instruksi yang bersangkutan.

 Komentar harus diawali dengan titik koma. Sub rutin dari bagian besar
program yang mengerjakan suatu operasi biasanya diawali dengan blok
komentar yang menjelaskan fungsi sub rutin atau bagian besar program
tersebut.
 END merupakan kode perintah terakhir yang menunjukan batas akhir dari
proses Assembly.

9
INTERPRETER

Interpreter tidak menghasilkan bentuk object code, tetapi hasil translasinya


hanya dalam bentuk internal, dimana program induk harus selalu ada-berbeda
dengan compiler

Interpreter adalah Perangkat lunak yang mampu mengeksekusi code program


(yang ditulis oleh programmer) lalu menterjemahkannya ke dalam bahasa mesin,
sehingga mesin melakukan instruksi yang diminta oleh programmer tersebut.
Perintah-perintah yang dibuat oleh programmer tersebut dieksekusi baris demi
baris, sambil mengikuti logika yang terdapat di dalam kode tersebut. 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 kompilator
yang merupakan bagian dari system 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. Contoh program yang menggunakan intpreter adalah Cobol, PHP, ASP, dan
lain-lain.
Interpreter tidak menghasilkan object code. Hanya menghasilkan translasi
internal. Input dapat berasal dari source code maupun dari inputan program dari
user. Source code dan inputan data user diproses pada saat yang bersamaan.
Pada interpreter, program tidak harus dianalisis seluruhnya dulu, tapi bersamaan
dengan jalannya program.

10
 Keuntungan
Mudah bagi user, debuging cepat, penyusunan program relatif lebih
cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan
secara kaidah dalam program.

 Kekurangan
Eksekusi program lambat, tidak langsung menjadi program executable,
interpreter juga harus berada dalam memori. Jadi memori selalu digunakan
baik untuk program maupun interpreter. Disamping itu, program sumber
(source code) yaitu program aslinya tidak dapat dirahasiakan.

Alur Kerja Interpreter

 Perbedaan antara Compiler dengan Interpreter :


- Jika hendak menjalankan program hasil kompilasi dapat dilakukan tanpa
butuh kode sumber. Sedangkan interpreter butuh kode sumber.
- 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 ) . sedangkan
interpreter tidak ada proses terpisah.
- Interpreter sangat baik untuk membuat / menguji coba modul ( sub-routine
/ program-program kecil ). Maka compiler kesulitan karena untuk
mengubah suatu modul / kode objek kecil, maka harus dilakukan proses
linking / penggabungan kembali semua objek dengan library yang
diperlukan.

11
EKSEKUSI

Sebuah program komputer biasanya akan disimpan terlebih dahulu dalam


memori utama (RAM) komputer sebelum dijalankan yang biasanya dilakukan
oleh sistem operasi. Prosesor kemudian akan mengeksekusi program tersebut,
instruksi demi instruksi sampai program tersebut diterminasi. Sebuah program
yang tengah dieksekusi oleh prosesor dinamakan sebagai proses. Terminasi
ataupun penghentian eksekusi sebuah program biasanya terjadi baik karena
permintaan dari pengguna, interupsi pengguna, kesalahan atas program itu sendiri,
ataupun kesalahan atas perangkat keras yang digunakan.
Dalam sebuah program waktu eksekusi merupakan sesuatu yang penting dan
sangat dipertimbangkan dalam penyusunan suatu algoritma. Algoritma yang
tercepat dan tepat merupakan pilihan yang tepat dalam perancangan suatu
software.

Terdapat banyak cara untuk mengukur efisiensi sebuah algoritma, tentunya


dengan kelebihan dan kekurangan dari masing-masing cara tersebut. Mari kita
lihat cara mengukur efisiensi yang paling sederhana terlebih dahulu: melihat
berapa langkah yang perlu dijalankan untuk menyelesaikan algoritma tersebut.
Jika kita memanggil fungsi pangkat seperti berikut:

pangkat(2, 1)

Maka kode akan dieksekusi seperti berikut:

hasil = 1
for i in range(0, 1):
hasil = 2 * hasil
return hasil

Total terdapat tiga langkah yang perlu dijalankan untuk mendapatkan hasil
pangkat yang diinginkan.

12
Berikut contoh eksekusi pada fungsi pangkat :

Tingkat Pertumbuhan Fungsi Pangkat


Peningkatan jumlah langkah eksekusi seperti inilah yang menyebabkan
kita mengukur efisiensi algoritma dengan ukuranpertumbuhan jumlah langkah
eksekusi relatif terhadap jumlah data. Melihat grafik pertumbuhan yang diberikan,
fungsi pangkat yang dikembangkan dapat dikatakan memiliki tingkat
pertumbuhan yang linear.

13
BAB III
PENUTUP

A. KESIMPULAN
Dalam melakukan pembacaan suatu program yang ditulis dalam bahasa
sumber, kemudian diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa
sasaran. Dalam melakukan proses penerjemahan tersebut, sudah barang tentu
kompilator akan melaporkan adanya keanehan-keanehan atau kesalahan yang
mungkin ditemukannya. Proses penerjemahan yang dilakukan oleh kompilator
interpreter dan assembler ini disebut proses kompilasi (compiling). Dengan
adanya program bantu dan tata cara pembentukan yang sistematis dan tertata
dengan baik serta pendefinisian struktur bahasa yang cermat, maka suatu
kompilator untuk bahasa yang terstruktur.

14
DAFTAR PUSTAKA

Teknik-kompilasi.htm, Global Komputer (http://globalkomputer.com/), 2008.


mufidnilmada.staff.gunadarma.ac.id/TEKNIK+KOMPILASI+1.pdf
setia.lecturer.pens.ac.id/Modul/Asm/pengantar.pdf
https://en.wikipedia.org/wiki/Interpreter_(computing)
p_sarjono.staff.gunadarma.ac.id/AP3+-+Week+10+-+Perulangan.pdf
http://bertzzie.com/knowledge/analisis-algoritma/KompleksitasAlgoritma.html

15

Anda mungkin juga menyukai