Segala puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa yang telah
menganugerahkan rahmat, karunia serta ridha-nya, sehingga penulis dapat menyelesaikan
Makalah tentang Model Kompilator". Makalah ini disusun sebagai salah satu tugas mandiri
pada mata kuliah Teknik Kompilasi.
Dalam penulisan makalah ini diharapkan dapat memberikan informasi yang
kemudian bermanfaat bagi kita.
Akhirnya penulis berharap karya tulis ini dapat berguna dan dapat dipergunakan
sebagaimana mestinya. Penyusun mengharapkan kritik dan saran untuk kemajuan di masamasa mendatang. Atas perhatiannya penyusun ucapkan terima kasih.
Penulis
DAFTAR ISI
KATA PENGANTAR....................................................................................................i
DAFTAR ISI.................................................................................................................1
BAB I PENDAHULUAN.............................................................................................2
1.1 Latar Belakang................................................................................... 2
1.2 Rumusan Masalah.............................................................................. 2
1.3 Maksud dan Tujuan............................................................................. 2
BAB IV PENUTUP.....................................................................................................14
A. KESIMPULAN....................................................................................... 14
DAFTAR PUSTAKA..................................................................................................15
BAB I
1
PENDAHULUAN
1.1.
Latar Belakang
Tujuan dari belajar Pemrograman adalah agar dapat membiasakan diri
Rumusan Masalah
salah satu tugas mata kuliah Teknik Kompilasi di Universitas Putera Batam Jurusan
Teknik Informatika. Sedangkan tujuan dari penulisan tugas ini adalah:
1. Menerapkan teori yang didapat selama belajar di Universitas Putera Batam.
2. Memberikan uraian penjelasan lebih terperinci mengenai pengertian model
kompilator.
3. Mengembangkan kreativitas dan wawasan penulis.
BAB II
LANDASAN TEORI
2.2
Mutu Kompilator
1.
Mutu program objek : ukuran dan kecepatan eksekusi dari program objek
tergantung pada :
Fungsi translasi yang digunakan (cara untuk melakukan perubahan dari source code
ke object code).
3.
Pembuatan Kompilator
2.4
Bahasa : himpunan semua string yang dapat dibentuk dari himpunan alphabet.
Klasifikasi bahasa menurut hirarki Chomsky :
- Bahasa Regular
Pada mesin otomata Finite State Automata (NFA dan DFA).
- Bahasa Bebas Konteks (Context Free)
Pada mesin otomata Push Down Automata.
- Context Sensitive
Bekerja pada mesin otomata Linier Bounded Automata.
- Unrestrieted / Tipe 0 / Phase Structure
Pada mesin turing, tidak ada batasan.
2.5
Berguna untuk mendapatkan token, yaitu melakukan analisis leksikal. Misal suatu
bahasa memiliki himpunan simbol terminal/token berikut :
(t_PLUS, t_MIN, t_ID, t_INT).
Maka diagram state-nya :
*t_ID(identifier) bisa berupa nama atau keyword.
Keyword/kata kunci yang sudah didefinisikan oleh suatu bahasa. Misal VAR jumlah :
integer
maka VAR, integer adalah keyword, jumlah adalah nama.
2.6
E -> T | T + E | T - E, T -> a
Notasi BNF
2.7
Diagram Sintaks
2.8
- Top Down : dari root menuju leave (simbol awal sampai simbol terminal).
A -> b | c
Secara rekursif menurunkan semua variabel dari awal sampai bertemu terminal dan
tidak pernah mengambil token secara mundur.
- Semua simbol variabel dijadikan prosedur/fungsi.
- Bertemu simbol terminal, panggil prosedur Scan.
- Bertemu simbol variabel, panggil prosedur tersebut.
BAB III
PEMBAHASAN
7
Struktur data tersebut menolong kita mendapatkan catatan tiap identifier secara
cepat dan menyimpan atau mendapatkan kembali data tersebut. Secara skematis,
proses kompilasi digambarkan sebagai berikut:
10
Bila ada himpunan yang terdiri kurang dari 33 elemen bisa secara langsung
di-encode dengan value 32-bit.Oleh karena itu, tak ada run-time library yang
akan dipanggil untuk mengevaluasi operan-operan pada himpunan ini.
Himpunan ini secara langsung di-encode oleh code generator.
f. Range Checking
Assignmen dari suatu konstanta ke variabel akan diperiksa range-nya pada
saat kompilasi.hal ini yang akan meniadakan pemeriksaan range pada saat
run-time.
g. And Instead of Modul
Ketika operan kedua, operasi mod pada nilai unsigned merupakan sebuah
konstanta 2, maka sebuah perintah and akan dipakai sebagai pembagian
integer. Ini akan melahirkan code yang lebih efisien.
h. Shift Instead of Multiply or divide
Bila salah satu operan pada suatu perkalian merupakan konstanta dua, maka
akan di-encode dengan memakai arithmetic shift instructions, sehingga akan
dihasilkan kode yang lebih efisien. Begitu juga dengan pembagian dengan
operator div dan pengaksesan terhadap indeks array.
i. Automatic Alignment
Secara default semua variabel yang lebih dari satu byte dijamin akan
disetarakan dengan minimal batasan satu word. Penyejajaran pada stack dan
data section tergantung pada setiap prosessor.
j. Smart Linking
Fitur ini akan meniadakan code yang tidak berguna pada pembentukan file
executable, sehingga akan didapatkan ukuran file yang sangat kecil. Smart
linking bisa diaktifkan dengan menambahkan baris Cx pada fpc.cfg, atau
dengan cara menambahkan {$SMARTLINK ON} pada program utama.
k. Inline Routines
Pengevaluasian ekspresi boolean berhenti secepatnya jika hasilnya sudah
diketahui, sehingga proses kompilasi lebih cepat daripada membandingkan
seluruh operan boolean.
Fitur untuk mengkodekan secara langsung runtime library Lo, Hi, High,
Sizeof, typeof, Length, Pred, Succ, Inc, dan Assigned ke file executable
(program jadi).
11
BAB IV
PENUTUP
4.1 Kesimpulan
12
Ppc386 merupakan compiler yang cukup bagus. Hal ini dibuktikan dengan
kecepatan dan waktu roses kompilasi, mutu program object, dan integrated
environment(IDE) yang lengkap. Disampng itu ppc386 juga mendukung antara lain:
1. fully 32-bit code
2. ansi string
3. exception support
4. secara parsial kompatibel dengan Borland Pascal dan Borland Delphi.
5. RTTI support
6. procedure dan operator overloading
7. code optimizer
peephole optimizer
loading variabel ke register
assembler level dataflow analyzer
stack frame eleminations
integrated BASM(built-in assembler) parser
support ATT syntax yang dipakai oleh GNU C
support Intel syntax yang dipakai oleh Turbo Pascal.
8. bisa mengkompile program pascal menjadi kode assembly, khusus untuk
assembler berikut :
GNU Assembler (GAS)
Netwide assembler (Nasm)
Microsoft Assembler/Turbo Assembler (Masm/Tasm)
9. bisa memanggil kode eksternal bahasa C
10. smartlinking
11. support GNU debugge
DAFTAR PUSTAKA
Aho, Alvred V. dan Jeffrey D Ullman 1986. Compilers Principle, Techniques, and
Tools. Massachusetts:Addison-Wesley Publishing Company
Seberta, Robert W. 1993.Concept of Programming Language, second edition.
Massachusetts: The Benyamin/Commings Publishing Company,inc.
Utdirartatmo, Firrar. 2001. Teknik Kompilsai. Yogyakarta: J & J Learning
Yogyakarta.
13
14