Anda di halaman 1dari 19

Tugas

TEKNIK KOMPILASI

Hadi Witoyo & Suwidi

Bagai mana Kompiler

Pascal Bekerja

iii

Hadi & Widie FTIKUMT2001 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: : 2001 312 47 0065 0047 : 2001 312 47 0065 0063

Hadi Witoyo Suwidi

Hadi & Widie FTIKUMT2001 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 FTIKUMT2001 Published in 2004

Daftar isi
Pengantar iii Daftar isi ............. ..iv BAB I PENDAHULUAN Latar Belakang.........................................................................1 Ruang lingkup..........................................................................2 Tujuan .. BAB II PEMBAHASAN Deskripsi dan Sejarah Free Pascal............................................3 Cara Kerja Kompilator (Compiler).............................................4 Scanner Generator (Lexical Analyzer).......... Parser Generator.. Syntax-directed translation Engines Automatic Code Generators Data-flow Engines Deskripsi Cara Kerja Kompilator (Compiler) 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

..2

4 4 4 5 5 5

iv

Hadi & Widie FTIKUMT2001 Published in 2004

Kesimpulan9 Daftar Pustaka................................................................. ......11

iv

Hadi & Widie FTIKUMT2001 Published in 2004

P E N D A H U L U A N

1
Bab

Latar Belakang
Bagai mana Pascal Compiler itu open source hingga kita bebas mengunakan dan merubahnya, dan dimana kita peroleh compiler tersebut .
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 Pada saat ini ada banyak sekali kompilator yang Ikut dalam forum dikembangkan untuk memenuhi kebutuhan Cari file-file para pengembang suplay bahasa pemrograman. Begitu juga dengan kompilator pascal. Banyak badan nirlaba dan komersil yang mengembangkan compiler pascal. Tentunya dengan tujuan yang berbedabeda 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-download di

ascal adalah salah satu bahasa tingkat tinggi dan merupakan bahasa

Hadi & Widie FTIKUMT2001 Published in 2004

P E N D A H U L U A N

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.

Hadi & Widie FTIKUMT2001 Published in 2004

P E N D A H U L U A N

2
Bab

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.

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 keluarganya. Serta versi 0.99.5 bagi yang memakai prosessor motorolla.

Hadi & Widie FTIKUMT2001 Published in 2004

P E N D A H U L U A N

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 Perhatikan fungsi daunnya dan setiap elemen non-daun merepresentasikan ini pada suatu klas sintaksis.
semanti c

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,

Hadi & Widie FTIKUMT2001 Published in 2004

P E N D A H U L U A N

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 machinedependent. Suatu code optimizer yang baik bisa menghasilkan kode yang lebih baik daripada pemrogram assembler yang berpengalaman.

Deskripsi Cara Kerja Kompilator (Compiler),


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) 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.

Hadi & Widie FTIKUMT2001 Published in 2004

P E N D A H U L U A N

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:

Hadi & Widie FTIKUMT2001 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:

Hadi & Widie FTIKUMT2001 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.

Hadi & Widie FTIKUMT2001 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.

Hadi & Widie FTIKUMT2001 Published in 2004

P E N D A H U L U A N

10

Hadi & Widie FTIKUMT2001 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) 9. bisa memanggil kode eksternal bahasa C
11

P E N U T U P

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, Michal Van. 2002. Free Pascal Programmers' manual.

13

Anda mungkin juga menyukai