Selasa, 22 Februari 2011

Teknik Kompilasi


TEKNIK KOMPILASI

           Teknik Kompilasi adalah suatu cara atau suatu metode  dari beberapa hal yang diproses menjadi kecil atau menterjemahkan suatu bahasa pemrograman yang diubah ke bahasa lain atau bahasa mesin.
Bahasa pemrograman menjembatani antara pemikiran manusia yang sering tidak terstruktur dengan kepastian yang diperlukan oleh komputer untuk melakukan eksekusi. Bahasa pemrograman seperti ini biasanyamerupakan  bahasa tingkat tinggi. Komputer digital, di sisi lain, menerima dan memahami hanya bahasa tingkat rendah mereka sendiri, terdiri dari derajat nol dan satu, yang sulit dipahami oleh manusia.
            Bahasa pemrograman  berdasarkan tingkat ketergantungannya dengan mesin meliputi :
1.    Bahasa Mesin
Merupakan bentuk terendah dari bahasa komputer. Setiap instruksi dalam program direpresentasikan dengan kode numerik, yang secara fisik berupa deretan angka 0 dan 1.
2.    Bahasa Assembly
Merupakan bentuk simbolik dari bahasa mesin. Setiap kode oprasi memiliki kode simbolik, misalnya ADD untuk penjumlahan (addition) dan MUL untuk perkalian (multiplication). Pada bahasa assembly tersedia alat bantu untuk diagnostik atau debug yang tidak terdapat pada bahasa mesin.
3.    Bahasa Tingkat Tinggi (user oriented)
Disebut tingkat tinggi karena lebih dekat dengan manusia. Memberikan fasilitas yang lebih banyak, kontrol program yang lebih terstruktur, kalang (nested), block,dan prosedur.
4.    Bahasa yang problem oriented
Memungkinkan penyelesaian untuk suatu masalah atau aplikasi yang spesifik. Bahasa yang problem oriented kadang dimasukkan pula sebagai bahasa tingkat tinggi.

Bahasa pemrograman setiap site membutuhkan berapa bit:
Alamat pada source program umumnya merupakan alamat simbolik. Sebuah compiler biasanya melakukan pengikatan alamat simbolik (symbolic address) ke alamat relokasi dipindah (relocatable address). Misalnya compiler mengikatkan alamat simbolik ke alamat relokasi “14 byte from the beginning of this module”. Editor Linkage mengikatkan alamat relokasi ini ke alamat absolute (absolute addresses) “74014”.

1. Byte,merupakan Sebuah grup yang terdiri dari 8 bit. Satu byte dapat menyimpan sampai 256 macam informasi (ingat, 2 pangkat 8 sama dengan 256), misalnya angka 0 hingga 255 atau 256 huruf dan simbol yang berbeda-beda. Byte terkadang disebut juga dengan oktet, terutama untuk sistem koneksi seperti protokol internet.
   2. Word, merupakan sebuah grup yang terdiri dari beberapa byte. Pada pemrograman Win32, word biasanya diwujudkan sebagai 2 byte atau 16 bit. Grup dari 4 byte atau 32 bit disebut double-word.

Bahasa mesin setiap site membutuhkan berapa bit

Pada dasarnya komputer merupakan  makhluk digital yang hanya mengerti digit 1 dan digit 0 (binary). Komputer hanya mau menerima data dalam bentuk binary dan juga hanya bisa mengerti perintah dalam bentuk binary. Perintah dalam bentuk binary ini disebut dengan bahasa mesin.

Secara umum program bisa dilihat sebagai urutan langkah/perintah/instruksi untuk menyelesaikan sesuatu. Programmer bisa langsung membuat program dengan menuliskan perintah dalam bentuk 1 dan 0 (bahasa mesin), atau menggunakan bahasa tingkat tinggi yang lebih manusiawi seperti C, Visual Basic atau Java.Hanya dua simbol yang dimengerti komputer, yaitu 1 dan 0.

Contoh sederhana ini: programmer ingin menyimpan nilai register EAX ke dalam stack. Dalam bahasa mesin programmer harus menuliskan 01010000. Sedangkan dalam bahasa assembly programmer cukup menulis PUSH EAX. Manakah yang lebih manusiawi? Tentu menggunakan assembly lebih manusiawi. Sangat sulit bagi manusia apabila harus selalu menggunakan 1 dan 0 setiap memberi perintah.

Register merupakan variabel internal yang sudah built-in di dalam prosesor yang bisa dipakai oleh programmer untuk bermacam-macam keperluan. Karena register posisinya di prosesor, bukan di memory, maka menggunakan register sebagai variabel jauh lebih cepat dibanding menggunakan variabel yang dismipan di suatu alamat di memori.

Jenis-jenis register yang ada pada prosesor Intel:
Kategori Nama Penjelasan General Purpose EAX, EBX, ECX, EDX Lebar data 32 bit, boleh diapakai untuk keperluan apa saja. E adalah Extended (karena awalnya register general purpose hanya 16 bit). AX,BX,CX,DX 16 bit bawah dari register 32 bit di atas. AX adalah bagian 16 bit bawah dari EAX. AH,AL,BH,BL,CH,CL,DH,DL Bagian 8 bit dari register 16 bit di atas . AH adalah 8 bit atas dari AX. AL adalah 8 bit bawah dari AX. Segment Register         CS, SS, DS, ES, FS, GS       Digunakan untuk menunjuk 16 bit awal alamat memori. CS = Code, SS = Stack, DS = Data, ES,FS,GS = Extra segment register Offset Register Digunakan untuk menunjuk 16 bit akhir alamat memori. Alamat memori ditunjukkan dengan gabungan segment dan offset. EBP Dipakai sebagai offset frame dalam stack. Biasanya menunjuk pada bottom of stack frame di suatu fungsi. ESP menunjukkan puncak stack, EBP menunjuk dasar stack.
ESI Biasanya dipakai untuk offset string sumber dalam operasi yang melibatkan blok memori.
EDI Biasanya dipakai untuk offset string tujuan dalam operasi yang melibatkan blok memori.
ESP Stack pointer, menunjukkan puncak dari stack.
Special EFLAGS Tidak bisa dipakai programmer, hanya dipakai prosesor untuk hasil operasi logical dan state.
EIP Tidak bisa dipakai programmer, hanya dipakai prosesor untuk menunjukkan alamat memori yang berisi instruksi berikutnya yang akan dieksekusi.



DAFTAR PUSTAKA

TEKNIK KOMPILASI,Firrar Utdirartatmo.J&J Learning Yogjakarta


0 komentar:

Posting Komentar