Teknik Kompilasi
Merupakan Teknik dalam melakukan pembacaan
suatu program yang ditulis dalam bahasa sumber, kemudian diterjemahkan
ke dalam suatu bahasa lain yang disebut bahasa sasaran.
Tehnik Kompilasi mengajarkan kita untuk mengerti mengenai proses
compiler dari sebuah bahasa pemprograman.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
ini disebut proses kompilasi (compiling).1.Apa itu tehnik kompilasi adalah sebuah tehnik bagaimana melakukan translasi atau penterjemahan dari bahasa pemprograman/bahasa tingkat tinggi menjadi sebuah bahas mesin/assembly language.
2.Kegunaan Tehnik Kompilasi àmempermudah programmer dalam menentukan hasil akhir dari sebuah program yang dia inginkan
3.Jenis bahasa Pemprograman berdasarkan tigkat ketergantungan terhdap mesin :
a.Bahasa Mesin
b.bahasa Assembly
c.Bahasa Tingkat Tinggi(User Oriented)
d.Problem Oriented.
4.Macam-Macam Translator
a.Interpreter=suatu program yang mengeksekusi secara langsung intermediate code dari satu bahasa pemprograman.
b.Assembler=suatu translator yang menterjemahkan program sumber yang ditulis dalam bahasa assembly menjadi bahasa mesin.
c.Compiler=Menerima program sumber sebagai input dan menghasilkan sederatan instruksi mesin yang ekuivalen sebagai outputnya.
5.Proses Kompilasi
a.analisis leksikal/Analisis Linear/Pembacaan sekilas(Scanning)
b.Analisis Sintaksis
c.analisis Semantiks
d.Proses pembentukan kode.
e.Proses Optimasi Kode
f.Tabel manajemen(book keeping)
g.Penanganan kesalahan(Error Handling)
6.Hasil Dari 3 proses analisis adalah sebuah intermediate code /kode antara
3 proses analisa yang terjadi dalam kompilasi adalah
a.Analisis Leksikal
b.analisis Sintaksis
c.Analisis Semantik
7.Optimasi program adalah sebuah tahap yang digunakan untuk menghasilkan kode program yang berukuran lebih kecil dan lebih cepat dalam proses eksekusinya.
8.Berdasarkan ketergantungannya pada mesin optimasi program dibagi menjadi :
a.Machine Dependent Optimizerà Kode Optimasi yang telah disediakan oleh processornya namun hanya dapat digunakan oleh satu jenis dan tipe processor sajah.
b.Machine Independent Optimizerà Kode Optimasi yang dapat digunakan oleh banyak tipe mesin dan processor.
9.Optimasi program terbagi atas : optimasi global dan optimasi local.
a.optimasi local adalah optimasi yang hanya dilakukan pada satu blok dan source kode.
b.optiimasi global adalah optimasi yang dilakukan setelah dilakukan analisis flow yaitu suatu graph berarah yang menunjukkan jalur yang mungkin selama proses eksekusi program.
10.Cara-cara optimasi Lokal :
a.Folding
b.Redundant subexpression elimination
c.Optimasi dalam sebuah Iterasi
*Loop Unrolling digantikan dengan penulisan langsung dengan syrat pengulangan tidak lebih dari 3
*frequency reduction pemindahan statement ke tempat yang lebih jarang diekseksekusi seandainya statement tersebut kurang dibutuhkan dalam sebuah iterasi.
d.Strength Reduction
11.Optimasi Global berguna bagi :
a.Programmer à untuk menginformasikan
*Dead Code-à Kode yang tidak pernah dieksekusi
*Unused Parameterà Parameter yang tidak pernah digunakan
*Unused VariabelàVariabel-variable yang tidak dipakai dalam program.
*VARIABEL yang dipakai tanpa nilai awal.
b.Kompilator
*Meningkatkan efisiensi eksekusi program
*Menghilangkan useless code/kode yg tidak terpakai.
Contoh
kompilator adalah :Bahasa Pascal, C++.
Contoh
Interpreter adalah : Bahasa Basica, Dbase / Foxbase
Contoh Translator adalah : Bahasa Pascal, C++,
Bahasa Basica Contoh
Assembler adalah : TASM, MASM, NASM, FASM
Contoh Emulator : emu8086
perbandingan
antara Turbo Pascal 5 dan Turbo Pascal 6, di mana Turbo Pascal 6 lebih baik
dari pada Turbo Pascal 5 bila program objek ( exe ) yang di hasilkan berukuran
lebih kecil dan lebih cepat di eksekusi. Hal ini di pengaruhi oleh fungsi
translasi yang di gunakan oleh kompilator tersebut ( cara untuk melakukan
perubahan dari source kode ke object kode ).
Penerjemah
bahasa pemrograman dibedakan menjadi tiga macam, yaitu:
Assembler adalah
program yang digunakan untuk menerjemahkan kode sumber dalam bahasa rakitan
(assembly) ke dalam bahasa mesin Referensi Pascal Tim Olimpiade Komputer
Indonesia
Kompiler adalah program penerjemah yang mengonversi semua kode sumber
selain dalam bahasa rakitan menjadi kode objek. Hasil berupa kode objek inilah
yang bisa dija lankan oleh komputer. Perlu diketahui, proses untuk melakukan penerjemahan ini biasa disebut kompilasi. Bahasa
pemrograman yang menggunakan proses kompilasi adalah: Bahasa COBOL, Pascal ,.
Bahasa C Intepreteradalah program yang menerjemahkan satu per satu instruksi
dalam kode sumber dan kemudian segera menjalankan instruksi yang telah
diterjemahkan tersebut. Bahasa seperti BASIC pada awalnya menggunakan konsep
intepreter ini.
Bahasa rakitan (bahasa
Inggris: assembly language) adalah bahasa pemrograman komputer tingkat rendah.
Bahasa assembly merupakan notasi untuk bahasa mesin yang dapat dibaca
oleh manusia dan berbeda-beda tergantung dari arsitektur komputer yang
digunakan. Berbeda dengan bahasa pemrograman tingkat tinggi, bahasa assembly
atau rakitan biasanya memiliki hubungan 1-1 dengan instruksi bahasa mesin.
Misalnya, tiap julukan (mnemonic) yang ditulis di program dengan bahasa rakitan
akan diterjemahkan menjadi tepat satu kode operasi yang dapat dimengerti
langsung oleh komputer. Pada bahasa tingkat tinggi, satu perintah dapat
diterjemahkan menjadi beberapa kode operasi dalam bahasa mesin. Proses
pengubahan bahasa rakitan ke bahasa mesin dilakukan oleh assembler, dan proses
balikannya dilakukan oleh disassembler. Setiap arsitektur komputer memiliki bahasa
mesin yang berbeda-beda sehingga bahasa rakitannya pun berbeda-beda.
Pemrograman AT89S51
bahasa Assembly Bahasa
Assembly adalah bahasa pemrograman tingkat rendah. Dalam pemrograman komputer
dikenal dua jenis tingkatan bahasa, jenis yang pertama adalah bahasa
pemrograman tingkat tinggi (high level language) dan jenis yang kedua adalah bahasa pemrograman tingkat rendah
(low level language). Bahasa pemrograman tingkat tinggi lebih
berorientasi kepada manusia yaitu bagaimana agar pernyataan-pernyataan yang ada
dalam program mudah ditulis dan dimengerti oleh manusia. Sedangkan bahasa
tingkat rendah lebih berorientasi ke mesin, yaitu bagaimana agar komputer dapat
langsung mengintepretasikan pernyataan-pernyataan program.
Kelebihan
Bahasa Assembly:
1. Ketika di-compile lebih kecil
ukuran
2. Lebih efisien/hemat memori
3. Lebih cepat dieksekusi
Kesulitan Bahasa
Assembly:
1. Dalam melakukan suatu pekerjaan, baris program relatif lebih
panjang dibanding bahasa tingkat tinggi
2. Relatif lebih sulit untuk dipahami
terutama jika jumlah baris sudah terlalu banyak
3. Lebih sulit dalam melakukan
pekerjaan rumit, misalnya operasi matematis.
Compiler 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.
Tahap Kompilasi
: Ø Pertama source code
(program yang ditulis) dibaca kememori computer).
Ø Source code tersebut
diubah menjadi objek code (bahasa Assembly).
Ø Objek code di hubungkan dengan
liberary yang dibutuhkan untuk membentuk file yang bisa dieksekusi.
Ø Komplier
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. Interpreter Berbeda dengan compiler,
interpreter menganalisis dan mengeksekusi setiap baris program tanpa melihat
program secara keseluruhan. Keutungan dari interpreter adalah bahwa eksekusi
bisa dilakukan dengan segera tanpa melalui tahap komplasi. Untuk alas an ini
interpreter digunakan pada saat pembuatan program skala besar. Contoh program
yang menggunakan intpreter adalah Cobol, PHP, ASP, dan lain-lain.
Perbedaan 1.
Perbedaan antara Compiler dengan Interpreter :
a. Jika hendak menjalankan
program hasil kompilasi dapat dilakukan tanpa butuh source code. Kalau interpreter
butuh source code.
b. 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.
c. 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.
d. 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.
e. 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.
2. Perbedaan antara
Assembler,Interpreter dan Kompiler :
a. Assembler mengubah kode assembly menjadi
kode mesin.Interpreter mengubah kode tingkat tinggi menjadi real-time kode
mesin dan menyimpannya di memori untuk pengeksekusian secara langsung.Kompiler
mengubah kode tingkat tinggi menjadi real-time kode mesin atau beberapa kode
tingkat menengah dan menyimpan ke dalam sebuah file untuk bisa dieksekusi
kemudian.
b. Interpreter merupakan translator yang menerjemahkan bahasa paling lambat
dibandingkan assembler dan kompiler.
c. Kompiler merupakan translator yang paling
mudah untuk digunakan dalam menerjemahkan bahasa dibandingkan interpreter dan
assembler. Interpreter menerjemahkan program baris per baris, artinya apabila
suatu baris akan dieksekusi, maka baris tersebut diterjemahkan dulu dalam
bahasa mesin, baru selanjutnya baris berikutnya yang akan dieksekusi. Contoh
bahasa pemrograman yang menggunakan interpreter adalah Basic. Compiler
menerjemahkan semua perintah dalam bahasa mesin baru kemudian menjalankan hasil
penerjemahan. Hasil penerjemahan tersebut disimpan dalam file atau memori.
Contoh bahasa yang menggunakan compiler adalah Pascal, C, dan C++.
Tidak ada komentar:
Posting Komentar