Kamis, 20 Desember 2018

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

PERHITUNGAN JARAK EUCLDIAN

pengukuran jarak Eucldian : Studi kasus susu formula untuk anak balita Beberapa mnggu yang lalu datang seorang ibu kepada saya memi...