Ilustrasi Proses Kompilasi Kustanto 972021 Ilustrasi proses Kompilasi

  • Slides: 30
Download presentation
Ilustrasi Proses Kompilasi Kustanto 9/7/2021 Ilustrasi proses Kompilasi 1

Ilustrasi Proses Kompilasi Kustanto 9/7/2021 Ilustrasi proses Kompilasi 1

ARTI KATA TEKNIK KOMPILASI • Teknik : – Metode atau Cara • Kompilasi :

ARTI KATA TEKNIK KOMPILASI • Teknik : – Metode atau Cara • Kompilasi : – Proses menerjemahkan bahasa tingkat tinggi ke dalam bahasa Assembly. • Compile : – To translate a program written in a high-level programming language into machine language. 9/7/2021 Ilustrasi proses Kompilasi 2

Translator : Compiler & Interpreter Translator : • Adalah suatu program dimana mengambil input

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 9/7/2021 Ilustrasi proses Kompilasi 3

Ada Beberapa Translator 1. Assembler Source code adalah bahasa assembly, Object code adalah bahasa

Ada Beberapa Translator 1. Assembler Source code adalah bahasa assembly, Object code adalah bahasa mesin (Program penerjemah dari bahasa Assembly ke dalam bahasa mesin disebut Assembler) Assembler *. asm Object code *. exe /*. com 2. Compiler Source code adalah bahasa tingkat tinggi, object code adalah bahasa mesin atau bahasa assembly. Source code dan data diproses berbeda 9/7/2021 Object Code : Program hasil keluaran dari kompiler. Ilustrasi proses Kompilasi 4

Program ASM Kompilasi dan hasil 9/7/2021 Ilustrasi proses Kompilasi 5

Program ASM Kompilasi dan hasil 9/7/2021 Ilustrasi proses Kompilasi 5

Object Code : Program hasil keluaran dari kompiler. Data Source code Compiler Execution Hasil

Object Code : Program hasil keluaran dari kompiler. Data Source code Compiler Execution Hasil Object Code 3. Interpreter tidak menghasilkan bentuk object code, tetapi hasil translasinya hanya dalam bentuk internal, dimana program induk harus selalu ada-berbeda dengan compiler (Interpreter tidak menerjemahkan semua baris perintah dalam suatu program, tetapi hanya menganalisis dan kemudian langsung mengeksekusi setiap baris perintah tersebut). Source code Translator Hasil Data 9/7/2021 Ilustrasi proses Kompilasi 6

Contoh: 20 x = y + z BASIC akan menganalisis baris tersebut menggunakan beberapa

Contoh: 20 x = y + z BASIC akan menganalisis baris tersebut menggunakan beberapa prosedur yang ada pada interpreter BASIC dan kemudian menjumlahkan nilai y dan z di memori dan hasilnya diletakkan pada x. Keuntungan interpreter adalah pengguna dapat cepat memperoleh tanggapan. Dengan menulis satu baris perintah, lalu menulis RUN, pemakai bisa langsung mengetahui hasilnya. Sedangkan kerugiannya adalah lambat. Misalnya ada program pengulangan seperti berikut ini: 10 for i = 1 to 100 20 x(i) = y(i) + z(i) 30 next i Interpreter BASIC akan menganalisis baris 20 sebanyak 100 kali. Untuk hal-hal semacam ini kompiler akan menunjukkan eksekusi yang lebih cepat. kompiler tidak menerjemahkan semua perintah program sumber menjadi kode objek, tetapi kompiler akan menyediakan subroutine khusus dan subroutine tersebut hanya akan digunakan pada saat program hasil kompilasi dijalankan. Kumpulan subroutine tersebut dinamakan Run-time-library. 9/7/2021 Ilustrasi proses Kompilasi 7

Translator : Compiler & Interpreter Source Program Compiler OBJECT PROGRAM ERROR MESSAGES 9/7/2021 Ilustrasi

Translator : Compiler & Interpreter Source Program Compiler OBJECT PROGRAM ERROR MESSAGES 9/7/2021 Ilustrasi proses Kompilasi 8

Proses kompilasi dikelompokkan ke dalam dua kelompok besar : 1. analisa : program sumber

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 9/7/2021 Ilustrasi proses Kompilasi 9

Fase-fase proses sebuah kompilasi 9/7/2021 Ilustrasi proses Kompilasi 10

Fase-fase proses sebuah kompilasi 9/7/2021 Ilustrasi proses Kompilasi 10

Contoh Kompilasi 9/7/2021 Ilustrasi proses Kompilasi 11

Contoh Kompilasi 9/7/2021 Ilustrasi proses Kompilasi 11

View dari programmer 9/7/2021 Ilustrasi proses Kompilasi 12

View dari programmer 9/7/2021 Ilustrasi proses Kompilasi 12

Mesin View 9/7/2021 Ilustrasi proses Kompilasi 13

Mesin View 9/7/2021 Ilustrasi proses Kompilasi 13

Pembuatan compiler Bahasa mesin • Sangat sukar dan sangat sedikit kemungkinannya untuk membuat compiler

Pembuatan compiler Bahasa mesin • Sangat sukar dan sangat sedikit kemungkinannya untuk membuat compiler dengan bahasa ini, karena manusia susah mempelajari bahasa mesin, • Sangat tergantung pada mesin, • Bahasa Mesin kemungkinan digunakan pada saat pembuatan Assembler 9/7/2021 Ilustrasi proses Kompilasi 14

Pembuatan compiler Assembly • Hasil dari program mempunyai Ukuran yang relatif kecil • Sulit

Pembuatan compiler Assembly • Hasil dari program mempunyai Ukuran yang relatif kecil • Sulit dimengerti karena statement/perintahnya singkat-singkat, butuh usaha yang besar untuk membuat • Fasilitas yang dimiliki terbatas 9/7/2021 Ilustrasi proses Kompilasi 15

Pembuatan compiler Bahasa Tingkat Tinggi (high level language) • Lebih mudah dipelajari • Fasilitas

Pembuatan compiler Bahasa Tingkat Tinggi (high level language) • Lebih mudah dipelajari • Fasilitas yang dimiliki lebih baik (banyak) • Memiliki ukuran yang relatif besar, misal membuat compiler pascal dengan menggunakan bahasa C • Untuk mesin yang berbeda perlu dikembangkan tahapan-tahapan tambahan. • Misal membuat compiler C pada Dos bedasarkan compiler C pada unix 9/7/2021 Ilustrasi proses Kompilasi 16

Pembuatan compiler Boot. Strap • Untuk membangun sesuatu yang besar, dibangun/dibuat dulu bagian intinya

Pembuatan compiler Boot. Strap • Untuk membangun sesuatu yang besar, dibangun/dibuat dulu bagian intinya (niklaus Wirth - saat membuat pascal compiler) 9/7/2021 Ilustrasi proses Kompilasi 17

Boot. Strap P 2 P 1 Po • PO dibuat dengan assembly, • P

Boot. Strap P 2 P 1 Po • PO dibuat dengan assembly, • P 1 dibuat dari P 0, dan • P 2 dibuat dari P 1, jadi compiler untuk bahasa P dapat dibuat tidak harus dengan menggunakan assembly secara keseluruhan 9/7/2021 Ilustrasi proses Kompilasi 18

Contoh dari source program ke dalam kode mesin Source code IF COUNT =10 GOTO

Contoh dari source program ke dalam kode mesin Source code IF COUNT =10 GOTO DONE ELSE GOTO AGAIN ENDIF Assembly Language Compare A to B If equal go to C Go to D Machine language Compare 3477 2883 If = go to 23883 Go to 23343 Actual machine code 1001010001010100101010010010100101010010010 9/7/2021 Ilustrasi proses Kompilasi 19

Struktur Compiler 9/7/2021 Ilustrasi proses Kompilasi 20

Struktur Compiler 9/7/2021 Ilustrasi proses Kompilasi 20

Bagian-bagian Compiler: 1. Lexical Analiysis (scanner), ugasnya secara detail adalah mengindentifikasi semua besaran yang

Bagian-bagian Compiler: 1. Lexical Analiysis (scanner), ugasnya secara detail adalah mengindentifikasi semua besaran yang membangun suatu bahasa; mentransformasikan, dan menentukan jenis token; menangani kesalahan dan tabel simbol. Contoh besaran Leksikal : ØIdentifier, dapat berupa keyword atau nama kunci, seperti IF. . ELSE, BEGIN. . END (pada Pascal), INTEGER (pascal), INT, FLOAT (bahasa C). ØKonstanta, terdiri dari besaran yang merupakan bilangan bulat (integer), bilangan pecahan (float/Real), boolean (true/false), karakter, string, dan sebagainya. ØOperator, terdiri dari operator aritematika ( + - * /), operator logika ( < = > ). ØDelimiter, berguna sebagai pemisah/pembatas, seperti kurung buka, kurung tutup, titik, koma, titik dua, titik-koma ØWhite Space, pemisah yang diabaikan oleh program seperti : enter, spasi, ganti baris, akhir file. 2. Syntax Analysis, bertugas memeriksa kebenaran urutan dari token-token yang terbentuk oleh lexical analysis. Pengelompokan token-token kedalam class syntax (bentuk syntax), seperti: procedure, Statement, dan expression. 3. Semantics Analyser, proses ini adalah proses kelanjutan dari proses kompilasi sebelumnya, yaitu analisa leksikal (scanning) dan analisa sintaks (parsing). Parserhanya akan mengenali simbol-simbol '=', '+' dan '*', parser tidak mengetahui makna dari simbol-simbol tersebut, untuk mengenali simbol-simbol tersebut Compiler menggunakan Analysis Semantics. Pemeriksaan biasa dilakukan pada tabel indentifier, tabel display, dan tabel block. 4. Intermediate Code, bertujuan untuk memperkecil usaha dalam membuat compilator dari sejumlah bahasa ke sejumlah mesin. 9/7/2021 Ilustrasi proses Kompilasi 21

Tabel Informasi/simbol: 1. Tabel identifier, berfungsi menampung semua identifier yang terdapat dalam program. 2.

Tabel Informasi/simbol: 1. Tabel identifier, berfungsi menampung semua identifier yang terdapat dalam program. 2. Tabel Array, berfungsi menampung informasi tambahan untuk sebuah array. 3. Tabel blok, mencatat variabel-variabel yang ada pada blok yang sama. 4. Tabel Real, menyimpan elemen tabel bernilai real. 5. Tabel string, menyimpan informasi string. 6. Tabel display, mencatat blok yang aktif. 9/7/2021 Ilustrasi proses Kompilasi 22

Konsep Pascal • Struktur dari suatu program pascal terdiri dari sebuah judul program dan

Konsep Pascal • Struktur dari suatu program pascal terdiri dari sebuah judul program dan suatu blok program atau badan program. • Blok program dibagi lagi menjadi dua bagian, yaitu : bagian deklarasi dan bagian pernyataan. 9/7/2021 Ilustrasi proses Kompilasi 23

Secara ringkas, struktur suatu program pascal dapat terdiri dari: 9/7/2021 Ilustrasi proses Kompilasi 24

Secara ringkas, struktur suatu program pascal dapat terdiri dari: 9/7/2021 Ilustrasi proses Kompilasi 24

b. Bagian Deklarasi, Bagian deklarasi digunakan bila didalam program menggunakan pengenal (identifier) yang dapat

b. Bagian Deklarasi, Bagian deklarasi digunakan bila didalam program menggunakan pengenal (identifier) yang dapat berupa label, konstanta, tipe, variable, prosedur dan fungsi. 1. Deklarasi Konstanta, diawali dengan kata cadangan Const diikuti oleh kumpulan identifier yang diberi suatu nilai konstanta. Data konstanta nilainya sudah ditentukan dan pasti, tidak dapat dirubah didalam program 2. Deklarasi Variabel, Variabel adalah identifier yang berisi data yang dapat diubah-ubah nilainya didalam program. Menggunakan kata cadangan Var sebagai judul didalam bagian deklarasi variable dan diikuti oleh satu atau lebih identifier yang dipisahkan koma, diikuti dengan titik dua dan tipe dari datanya diakhiri dengan titik koma. 3. Deklarasi Tipe, Pascal menyediakan beberapa macam tipe data, yaitu : 1) tipe data sederhana, terdiri dari : a. tipe data standar : integer, real, char, string, Boolean. b. Tipe data didefinisikan pemakai : enumerated atau scalar, subrange 2) Tipe data terstruktur : array, record, file, set 3) Tipe data penunjuk 4. Deklarasi Label, Jika program menggunakan statement Goto untuk meloncat ke suatu statement yang tertentu, maka dibutuhkan suatu label pada statement yang dituju dan label tersebut harus di deklarasikan terlebih dahulu pada bagian deklarasi. Menggunakan kata cadangan Label diikuti oleh kumpulan identifier label dengan dipisahkan oleh koma dan diakhiri dengan titik koma. 5. Deklarasi Prosedur, Prosedur merupakan bagian yang terpisah dari program dan dapat diaktifkan dimanapun didalam program. Prosedur dibuat sendiri bilamana program akan dibagi-bagi menjadi beberapa blok-blok modul. Prosedur dibuat didalam program dengan cara mendeklarasikannya dibagian deklarasi prosedur. Menggunakan kata cadangan Procedure. 6. Deklarasi Fungsi, Fungsi juga merupakan bagian program yang terpisah mirip dengan prosedur, tetapi ada beberapa perbedaannya. Kata cadangan yang digunakan. Function. b. Bagian pernyataan Program pascal yang paling sederhana adalah program yang hanya terdiri dari sebuah bagian pernyataan saja. Begin End. Bentuk umum dari bagian pernyataan adalah : Begin Statement; End. 9/7/2021 Ilustrasi proses Kompilasi Konsep 25

 • Program Pascal yang paling sederhana Begin End. Pernyataan; Contoh: Begin End. Writeln(‘test’);

• Program Pascal yang paling sederhana Begin End. Pernyataan; Contoh: Begin End. Writeln(‘test’); ØJudul Program Contoh_awal; Begin Writeln(‘Pascal’); Writeln(‘test’); End. 9/7/2021 Ilustrasi proses Kompilasi 26

Struktur Program Pascal program nama_program; { Judul Program, boleh ada atau boleh tidak ada}

Struktur Program Pascal program nama_program; { Judul Program, boleh ada atau boleh tidak ada} uses. . . . ; { Unit yang digunakan, misalnya uses wincrt } var. . . . . ; { Definisi variabel } begin Statemen; { Pernyataan-pernyataan, misalnya writeln, readln } end. 9/7/2021 Ilustrasi proses Kompilasi 27

Contoh Cara menggunakan variable di dalam pascal program latihan_pascal; uses wincrt; var nama: string;

Contoh Cara menggunakan variable di dalam pascal program latihan_pascal; uses wincrt; var nama: string; {Kalau hanya string boleh, jadi tidak terbatas karakternya} begin clrscr; write(‘ Masukkan Nama : ‘); readln(nama); write(‘ Halo, Nama Saya ‘, nama); readln; End. 9/7/2021 Ilustrasi proses Kompilasi 28

Contoh Penulisan program 9/7/2021 Ilustrasi proses Kompilasi 29

Contoh Penulisan program 9/7/2021 Ilustrasi proses Kompilasi 29

Selesai 9/7/2021 Ilustrasi proses Kompilasi 30

Selesai 9/7/2021 Ilustrasi proses Kompilasi 30