Anda di halaman 1dari 19

Tugas

TEKNIK KOMPILASI
Hadi Witoyo & Suwidi

Bagai mana
Kompiler Pascal
Bekerja

iii Hadi & Widie FTIKUMT’2001 Published in 2004


FA K U LTA S T E K N I K I N F O R M AT I K A D A N K O M P U T E R

Universitas Mpu Tantular Jakarta

Tugas Makalah
Teknik Kompilasi Asuhan Bp Dede Sutarya ST

Disusun Oleh:
Hadi Witoyo : 2001 312 47 0065 0047
Suwidi : 2001 312 47 0065 0063

Hadi & Widie FTIKUMT’2001 Published in 2004


Kata Pengantar
Sudah sepantasnya Jika Puji Syukur dipanjatkan kehadirat ALLAH S.W.T
atas nikmat-Nya hingga kami dapat menyelesaikan tugas penyusunan makalah
tentang Teknik Kompilasi asuhan Bp. Dede Sutarya,ST ini, walaupun disana-
sini masih terdapat kekurangan. Demikian wajar adanya sebagai manusia yang
tak luput dari salah dan kilaf. Karena yang benar mutlak adanya datang dari
ALLAH S.W.T
Dengan penuh rasa harap semoga makalah sedehana ini memberikan
manfaat bagi kalangan Informatika umumnya. Telebih pada kalangan
pengembang yang sedang mencari referensi dalam hal teknik kompilasi.
Tidak lah mungkin menerangkan segala hal tentang kompilasi program
dalam satu makalah sederhana, karena itu maka makalah ini akan membahas
suatu topik/sub item yaitu bagai mana Kompiler pada pascal bekerja. Bagi
para pemula seperti halnya penulis harapkan, buku ini akan menjadi pengantar
belajar asal musal bagai mana bahasa manusia (bahasa pemrograman tingkat
tinggi) bisa di pahami oleh mesin atau disebutkan sebagai bahasa mesin.
Yang meliputi pembahasan tentang freepascal, kompiler pascal, mulai dari
cara kerja compiler sampai optimasi fitur-fitur yang disediakan free pascal. Hal
ini dapat dilakukan peubahan karena free pascal bersifat open-source, sehingga
kita bisa mengetahui dan mengembangkan freepascal ini sesuai kebutuhan dan
keinginan kita. Pada tahap yang lebih tinggi nantinya diharapkan bisa
memberikan kontribusi bagi pengembangan, free pascal dengan cara
menambah fitur-fitur baru dan menambah efektivitas sebuah kompilator.

Akhir kata penulis mengharapkan kritik dan saran dari pembaca guna
memperbaiki segala kekurangan yang ada, dan pembangunan karakter kami
untuk menuju yang lebih baik.
Sebagai media komunikasi kami sebarluaskan makalah ini di mailing list:
teknikkompilasi@yahoogroups.com
kirimkan saran ke penulis:
massuwidi@yahoo.com
yoyok@infokom.net

Jakarta, January 4, 2004

Penyusun

iii Hadi & Widie FTIKUMT’2001 Published in 2004


Daftar isi
Pengantar……………………………………………………………………… iii
Daftar isi ………………………...………………………………….......... ..iv

BAB I PENDAHULUAN
Latar Belakang......................................................................... 1
Ruang lingkup..........................................................................2
Tujuan ……………………………………………………………………….. ..2

BAB II PEMBAHASAN
Deskripsi dan Sejarah Free Pascal............................................3
Cara Kerja Kompilator (Compiler).............................................4
Scanner Generator (Lexical Analyzer)………………………….......... 4
Parser Generator………………………………………………………….. 4
Syntax-directed translation Engines…………………………………… 4
Automatic Code Generators……………………………………………… 5
Data-flow Engines…………………………………………………………… 5
Deskripsi Cara Kerja Kompilator (Compiler)………………………… 5
Fitur-Fitur yang didukung PPC386............................................7
Constant Folding......................................................................7
Constant Merging………............................................................7
Short Cut Evaluation.................................................................7
Constant Set In lining................................................................7
Small Sets ...............................................................................7
Range checking .......................................................................7
And Instead of module..............................................................7
Shift instead of multiply or divide .............................................8
Automatic alignment................................................................8
Smart linking ..........................................................................8
Inline routines..........................................................................8
Stack frame omission...............................................................8
Register variable.......................................................................8

PENUTUP

iv Hadi & Widie FTIKUMT’2001 Published in 2004


Kesimpulan……………………………………………………………………9
Daftar Pustaka.......................................................................11

iv Hadi & Widie FTIKUMT’2001 Published in 2004


1
Bab
P E N D A H U L U A N

Latar Belakang
Bagai mana Pascal Compiler itu open source hingga kita
bebas mengunakan dan merubahnya, dan dimana kita
peroleh compiler tersebut .

P
ascal adalah salah satu bahasa tingkat tinggi dan merupakan
bahasa pemrograman procedural yang banyak dipakai untuk
mengenalkan pemrograman bagi mahasiswa. Baik mahasiwa Ilmu
Komputer, Teknik Komputer , maupun Ilmu Murni, sehingga pascal cukup
populer di kalangan ini. Agar suatu baris kode pascal dimengerti oleh
komputer diperlukan suatu software yang akan menerjemahkannya ke
bahasa mesin. Software tersebut bisa berupa interpreter dan compiler.
Bagi interpreter, program akan langsung diterjemahkan atau dieksekusi.
Sehingga program (source) tersebut tidak terjadi perubahan bentuk dan
setiap instruksi dilakukan apa adanya. Sedangkan kompilator (compiler)
akan melakukan hal sebaliknya, yaitu melakukan translasi ke suatu
bentuk yang biasanya disebut sebagai object, kemudian oleh linker dan
loader diubah menjadi sebuah program yang
executable. Dalam lingkungan Windows®
CARA DOWNLOAD
biasanya berekstensi .exe. Inilah perbedaan
 Daftarkan email anda di yang mendasar antara interpreter dengan
http://www.freepascal.org/ kompilator (Compiler).
 Anda akan menjadi Member
 Ikut dalam forum Pada saat ini ada banyak sekali kompilator
 Cari file-file para pengembang yang dikembangkan untuk memenuhi
kebutuhan suplay bahasa pemrograman.
Begitu juga dengan kompilator pascal. Banyak badan nirlaba dan
komersil yang mengembangkan compiler pascal. Tentunya dengan
tujuan yang berbeda-beda dan dengan kelebihan dan kekurangan yang
berbeda pula. Dalam keadaan seperti ini penulis menawarkan salah satu
alternatif pengguanaan compiler pascal yang open-source dan gratis.
Sehingga bisa mengurangi pembajakan.Yakni freepascal yang bisa di-

1 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N D A H U L U A N

download di http://www.freepascal.org/ , ftp:/ftp.freepascal.org/fpc atau


di situs-situs mirror-nya yang lain.

Ruang Lingkup Pembahasan


Lingkup materi yang dibahas dalam makalah ini meliputi
deskripsi singkat tentang free pascal (ppc386) khusus untuk
windows, cara kerja sebuah compiler menghasilkan kode
yang dimengerti mesin, fitur-fitur yang ada di free pascal
(dalam rangka optimasi).

Tujuan Penyusunan Makalah


Secara sederhana makalah ini bertujuan untuk, memberikan penjelasan
bidang kompilasi pascal terutama tertuang pada topic-topik berikut:

• Menyediakan sebuah mini-Howto untuk menggunakan


dan optimasi compiler free pascal 1.0.6 pada Windows.

• Memberikan sebuah gambaran dan pemahaman


bagaimana sebuah compiler menciptakan sebuah object-
code, atau bagaimana inner workings suatu kompiler. Yang
meliputi Parsering (pemeriksaan kebenaran dan urutan
kemunculan token), Analisa semantik, Code Genarator, dan
Code Optimizer.

Secara sederhana gambaran diatas adalah sebuah pengantar untuk


segala jenis compiler. Yaitu urutan dan cara kerja compiler tak terkecuali
compiler pascal. Satu hal yang layak menjadi penekanan adalah bahwa
garis besar kinerja compiler adalah sama yaitu step yang di laluinya.

2 Hadi & Widie FTIKUMT’2001 Published in 2004


2
Bab
P E N D A H U L U A N

Diskripsi Dan Sejarah Free Pascal


Sebuah kebahagiaan bagi para pengembang jika bisa
turut menggunakan progam apalagi program bagus itu adalah
free dan Open, Selain itu juga bisa memberikan andil pada
perkembanganya.

P
ada mulanya diberi nama FPK-Pascal, kemudian diganti dengan
Free Pascal. Free Pascal sangat mirip dengan Turbo Pascal dan
Delphi, yang berjalan di sistem operasi DOS, Linux, Win32,
OS/2, dan AmigaOS. Untuk operating system lain, seperti FreeBSD,
Solaris, BEOS, PALMOS, dan NETBSD masih dalam tahap
pengembangan.
Compiler free pascal (ppc386) ditulis dalam bahasa Pascal dan
bisa dikompilasi sendiri dengan ppc386. Artinya bila ingin mengubah
kompiler ini, langkah yang harus dilakukan adalah mengkompile ulang
source-code yang disertakan dalam setiap paket dengan ppc386. Cara
yang lain yaitu dengan memakai fpcmake. Lain halnya dengan GNU
Pascal yang sama-sama open-source. Bedanya GNU Pascal ditulis
dalam bahasa C, sehingga bila ingin melakukan kompilasi ulang
kompiler harus menggunakan compiler C.
Tetapi hal ini tidaklah menjadi persoalan bagi seorang
programmer. Free Pascal mulai digarap pada bulan Juni 1993 dan baru
dirilis ke internet pada tahun 1996 versi 1.0.6 yang dirilis pada bulan
Maret tahun 2002. Untuk versi 1.1.x masih dalam tahap
pengembangan dan uji coba. Apabila telah stabil maka akan dirilis
dalam versi 1.2.x dengan perbaikan segala macam bug yang
ditemukan pada versi 1.1.x. Jadi masih sangat disarankan untuk
memakai versi 1.0.x bagi yang menggunakan prosessor Intel dan

3 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N D A H U L U A N

keluarganya. Serta versi 0.99.5 bagi yang memakai prosessor


motorolla.

Cara Kerja Kompilator (Compiler)

Untuk menghsilkan suatu program yang executable suatu


compiler punya langkah dan prosedur tersendiri. Untuk mengetahui
cara kerja suatu kompilator kita harus mengetahui perangkat-
perangkat pembangun kompilator. Perangkat pembangun kompilator
antara lain:

Scanner Generator (Lexical Analyzer), yaitu pemecahan dan pen


gelompokan source code menjadi besaran-besaran leksik (token).
Tujuannya untuk mengelompokkan token ke dalam konstanta, nama
variabel, keyword, dan operator. Misalnya sebuah baris program
sebagai berikut:

IF A=B THEN C=B+H ;

Akan dikelompokkan menjadi kelompok IF dan THEN, kelompok A, B,


C, dan H, serta kelompok = dan + . Dalam hal ini Scanner harus
memproses blank dan komentar.

Parser Generator, Perangkat ini yang akan menghasilkan syntax


analyzer. Fungsinya untuk menentukan bagaimana dekomposisinya.
Proses ini bisa dianalogikan dengan penentuan struktur kalimat dalam
bahasa inggris. Yaitu subject, verb, noun, atau adjective. Dalam
analisis sintaksis, yang menjadiperhatian kita adalah pengelompokan
token ke dalam kelas sitaksis, seperti expression, statement, dan
procedure. Parser memberikan suatu pohon sintaks dengan token
sebagai daunnya dan setiap elemen non-daun merepresentasikan
suatu klas sintaksis.

4 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N D A H U L U A N

Syntax-directed translation Engines, Bagian ini yang akan


menghasilkan intermediate form dari source code. Fungsinya untuk
menentukan maksud dari suatu source code. Meskipun secara
konseptual sintaks dari suatu program dipisahkan dari semantiknya,
mereka bekerja sama secara dekat. Keluaran dari bagian ini akan
diberikan ke code genereator.

Automatic Code Generators, Yaitu sebuah tool yang mempunya


sekumpulan aturan yang akan dipakai untuk mendefinisikan setiap
penerjemahan dari bahasa menengah ke bahasa mesin. Keluaran dari
code generator diberikan ke code optimizer (Dataflow
engines).

Data-flow Engines, Proses pada bagian ini bertujuan untuk


menghasilkan object yang lebih efisien.. Optimasi tertentu yang
mungkin pada level lokal meliputi evaluasi dari ekspresi konstanta,
pemakaian properti operator tertentu , seperti asosiatif, komutatif, dan
distributiif Optimasi global lebih lanjut juga bisa dilakukan. Ini meliputi
kemunculan dari subekspresi yang identik dan penghapusan
statement invariant dalam suatu loop, dan menempatkannya di luar
loop. Optimasi ini termasuk optimasi machine-independent. Alokasi
register secara optimal merupakan salah satu contoh optimasi yang
machine-dependent. Suatu code optimizer yang baik bisa
menghasilkan kode yang lebih baik daripada pemrogram assembler
yang berpengalaman.

Perhatikan fungsi
ini pada
semanti Deskripsi Cara Kerja Kompilator (Compiler),
c
Deskripsi Cara Kerja Kompolator (Compiler), Adalah sebagai
mana gambaran singkat berikut,

Secara konsep, sebuah compiler dioperasikan pada beberapa


fase. Tiap fase mengubah source program dari satu keadaan (bentuk)

5 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N D A H U L U A N

ke bentuk yang lain Salah satu diagram fase-fase compiler ada di


bagian bawah. Tiga fase pertama, merupakan pembentukan sebagian
besar porsi analisa pada suatu compiler yang telah dikenalkan pada
pembahasan perangkat compiler yang terdahulu.

Dua aktivitas yang lain, yakni symbol table managament dan


error handling, terlihat bergabung dengan enam fase dari lexical
analysis, syntax analysis, semantik analysis, intermediate
code generation, code optimation, dan code generation. Dalam
hal ini symbol-table manager dan error handler kita anggap
sebagai salah satu fase (tahap) dalam proses kompilasi.

Pada uraian sebelumnya (perangkat pembangun kompilator)


telah dibahas mengenai perangkat-perangkat yang dibutuhkan serta
fungsi dan unjuk kerja perangkat tersebut, kecuali symboltable
management dan error handler. Symbol-Table management
merupakan struktur data yang memuat catatn tiap identifier,
dengan fields untuk memberi atribut bagi identifier.
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:

6 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N D A H U L U A N

Fitur-Fitur yang didukung PPC386


Constant Folding, Jika suatu operan merupakan konstanta, ia akan
dievaluasi (dihitung) pada saat kompilasi. Contoh:

7 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N D A H U L U A N

C := 1 + 2 + 3 + 4 ;

Akan disingkat menjadi

C := 10;

Constant Merging, Pemakaian konstanta string, floating point, atau


konstanta ganda akan digantikan oleh satu satu dari konstanta
tersebut.

Short Cut Evaluation, Pengevaluasian ekspresi boolean berhenti


secepatnya jika hasilnya sudah diketahui, sehingga proses kompilasi
lebih cepat daripada membandingkan seluruh operan boolean.
.
Constant Set Inlining, Dengan pemakaian operator in akan lebih
efisien daripada memakai operator <,>, =, <=, >=, < atau >.
Karena dengan pemakaian operator ini bisa mengeleminasi range
perbandingan.
.
Small Sets, 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.

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.

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.

8 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N D A H U L U A N

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.

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.

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.

Inline routines, Pengevaluasian ekspresi boolean berhenti secepatnya


jika hasilnya sudah diketahui, sehingga proses kompilasi lebih cepat
daripada membandingkan seluruh operan boolean.

Inline routines, Fitur untuk mengkodekan secara langsung runtime


library Lo, Hi, High, Sizeof, typeof, Length, Pred, Succ, Inc,
dan Assigned ke file executable (program jadi).

Stack frame omission, Pada kondisi tertentu, stack frame (jalur keluar
masuknya kode) akan dihilangkan dan variable akan diakses secara
langsung lewat stack pointer. Kondisi-kondisi stack frame akan
dihilangkan:

• Sebuah fungsi yang tidak punya parameter atau variabel local

• Routine yang dideklarasikan dengan assembler modifier.

• Routine bukan merupakan kelas.

Register variable, Apabila kita mengaktifkan switch –Or pada fpc.cfg,


variabel atau parameter lokal yang sering dipakai akan dipindah ke
register sehingga aksesnya lebih cepat.

9 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N D A H U L U A N

10 Hadi & Widie FTIKUMT’2001 Published in 2004


P E N U T U P

Kesimpulan
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

a. peephole optimizer

b. loading variabel ke register

c. assembler level dataflow analyzer

d. stack frame eleminations

e. integrated BASM(built-in assembler) parser

f. support ATT syntax yang dipakai oleh GNU C

g. support Intel syntax yang dipakai oleh Turbo Pascal.

8. bisa mengkompile program pascal menjadi kode assembly,khusus


untuk assemblerasembleriberikut :

a. GNU Assembler (GAS)

b. Netwide assembler (Nasm)

c. Microsoft Assembler/Turbo Assembler (Masm/Tasm)

11
P E N U T U P

9. bisa memanggil kode eksternal bahasa C

10. smartlinking

11. support GNU debugger

12. support IDE (currently for GO32v2 and Win32 only, in beta testing
phase).

12
P E N U T U P

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.

Canneyt, Michaël Van. 2002. Free Pascal Programmers' manual.

13

Anda mungkin juga menyukai