Tampilkan postingan dengan label Compiler. Tampilkan semua postingan
Tampilkan postingan dengan label Compiler. Tampilkan semua postingan

Rabu, 10 Oktober 2007

Java VM


Program Java yang telah dikompilasi adalah platform-neutral bytecodes yang dieksekusi oleh Java Virtual Machine (JVM). JVM sendiri terdiri dari: class loader, class verification, runtime interpreter, Just In-Time (JIT) untuk meningkatkan kinerja kompilator.

Bahasa mesin terdiri dari sekumpulan instruksi yang sangat sederhana dan dapat dijalankan secara langsung oleh CPU dari suatu komputer. Sebuah program yang dibuat dengan bahasa tingkat tinggi tidak dapat dijalankan secara langsung pada komputer. Untuk dapat dijalankan, program tersebut harus ditranslasikan kedalam bahasa mesin. Proses translasi dilakukan oleh sebuah program yang disebut compiler.

Setelah proses translasi selesai, program bahasa-mesin tersebut dapat dijalankan, tetapi hanya dapat dijalankan pada satu jenis komputer. Hal ini disebabkan oleh setiap jenis komputer memiliki bahasa mesin yang berbeda-beda. Alternatif lain untuk mengkompilasi program bahasa tingkat tinggi selain menggunakan compiler, yaitu menggunakan interpreter. Perbedaan antara compiler dan interpreter adalah compiler mentranslasi program secara keseluruhan sekaligus, sedangkan interpreter menstranslasi program secara instruksi per instruksi. Java dibuat dengan mengkombinasikan antara compiler dan interpreter.

Program yang ditulis dengan java di-compile menjadi bahasa mesin. Tetapi bahasa mesin untuk komputer tersebut tidak benar-benar ada. Oleh karena itu disebut "Virtual" komputer, yang dikenal dengan Java Virtual Machine (JVM). Bahasa mesin untuk JVM disebut Java bytecode. Salah satu keunggulan dari Java adalah dapat digunakan atau dijalankan pada semua jenis komputer. Untuk menjalankan program Java, komputer membutuhkan sebuah interpreter untuk Java bytecode.

Interpreter berfungsi untuk mensimulasikan JVM sama seperti Virtual computer mensimulasikan PC komputer. Java bytecode yang dihasilkan oleh setiap jenis komputer berbeda-beda, sehingga diperlukan interpreter yang berbeda pula untuk setiap jenis komputer. Tetapi program Java bytecode yang sama dapat dijalankan pada semua jenis komputer yang memiliki Java bytecode.

pOetry about compiler


Apa sih compiler ituh?????apa yah....kalo secara ilmiah saya gak bisa jelasin tapi biasanya

dipakai untuk menggenerate program yang akan dibuat. Misalnya sebuah source code di vsual

basic akan dijadikan sebuah software aplikasi atau program....maka source code tersebut

harus di-compile sedemikian rupa agar jadi sebuah aplikasi ato software dengan sebuah

compiler...

CIRI - CIRI PROGRAM COMPILER

Ciri-cirinya :

1) Dapat memodifikasi Caption program sehingga menjadi nama lain. Misalnya sebuah program

dicopy biasa dari komputer satu ke komputer lain maka captionnya akan sama...catatan bukan

nama apliaksi or .exe nya yang diubah...tapi judul program yang ada di atas apliaksi

tersebut.

2) Dapat mengganti gambar dari aplikasi tersebut. Misalnya gambar A.jpg diletakkan dalam

sebuah program. Kalau dicopy secara biasa, otomatis gambar A.jpg akan ter-copy juga ke

program tersebut. Tetapi bila dicompile...maka gambar dapat berubah.

FUNGSI PROGRAM COMPILER

Fungsi dari program compiler ini adalah :

1) Mengubah caption, sehingga jika suatu program dikunci oleh virus seperti regedit,

msconfig, ms Dos shell dan lain - lain dapat tetap dijalankan, karena fungsi dari compiler

tersebut merubah caption program. Biasanya virus mendeteksi dari caption program tersebut

untuk menendang atau mematikan program dalamkode pertahanan virus.

2) Buat seneng- seneng and nambah program ajah....hahahahahhahaha

CARA KERJA COMPILER SEDERHANA

cara kerjanya sangat mudah, seperti yang disebutkan bahwa compiler disini adalah sangat

sederhana sekalai. Sehingga masih menggunakan fasilitas dari VB berupa modul COPYFILE. Jadi

bukan dicompiler secara murni, jadi Algoritma nya :

1) Program Dijalankan
2) Program akan mengecek apakah file yang diperlukan untuk compiler ada...disini saya

memakai aplikasi rdfce.ext
3) Setelah menemukan file rdfce.ext maka program akan menjalankan modul COPYFILE untuk

menyalin isi dari text dan gambar
4) Kemudian program akan mencompile aplikasi dan mengeluarkan file output sesuai dengan

nama file...kalau disini defaultnya test.exe

Mudah kan.....

PENERAPAN

Hal jahat :

Bisa diterapkan di aplikasi virus, misalkan untuk memberi penanda pada virus yang akan

digandakan. Misalnya virus a diberi penanda karakter A, otomatis untuk menyebarkan virus

tersebut agar tidak terdeteksi antivirus, maka kita harus memberi penanda lain. Dengan

menjalankan modul compiler tersebut kita dapat memberi penanda virus A dengan karakter B.

Tul gak.

Hal Baik:

Bisa diterapkan di aplikasi pembunuh virus seperti show kill process. Anda bisa donlot

showkillprocess di www.virologi.info. Tapi biasanya sebuah virus sudah menandai, jika

showkillprocess.exe berjalan, maka program tersebut akan dimatikan (Seperti brontok yang

menendang apliaksi regedit). Nah dengan menjalankan modul compiler ini kita dapat mengubah

isi caption dari program showkillprocess.exe sehingga caption-nya berbeda dan aplikasi

tersebut tidak ditendang oleh virus tersebut.

BEDAH PROGRAM

di dalam source code ada sebuah variabel :

Dim PropBag As New PropertyBag

- yang berarti variabel bebas. Variabel ini berisi caption, gambar dan password yang akan

diberikan kepada file compiler tersebut.

With PropBag
.WriteProperty "Caption", txtCaption.Text
.WriteProperty "Text", txtText.Text
.WriteProperty "Picture", imgPic.Picture
.WriteProperty "Protected", chkPass.Value
.WriteProperty "Password", txtPass.Text
End With

- Nah disini kita bisa mengeset apakah caption, gambar atau password.

FileCopy App.Path & "\rdfce.ext", App.Path & "\" & txtExeFile.Text

- Menyalin file sumber dan meng-compile sesuai caption, gambar dan password

Open App.Path & "\" & txtExeFile.Text For Binary As #1
BeginPos = LOF(1)

varTemp = PropBag.Contents

Seek #1, LOF(1)
Put #1, , varTemp
Put #1, , BeginPos

Close #1

- Membuat file compiler sesuai nama yang diinginkan, kalau di sini defaultnya test.exe

Nah coba jalankan program tersebut, kemudian isi caption, gambar and password sesuai

keinginan deh...okay!!!!!

Struktur Program COM


Compiler Assembly sudah banyak tersedia di internet, contohnya TASM (Turbo Assembler), MASM (Microsoft Assembler), NASM (Netwide Assembler), dan lain-lain.

Mengapa menggunakan bahasa Assembly?

  1. Cepat, Lebih cepat dari compiler lainnya.
  2. Lebih dekat dengan bahasa mesin, disebabkan bahasa Assembly dialamatkan 1:1 dengan bahasa mesin.
  3. Kode yang dihasilkan lebih kecil dari compiler lainnya.
  4. Dapat mengakses hardware lebih luas.

Salah satu bentuk program yang dapat dihasilkan oleh compiler Assembly adalah file COM.
FIle COM adalah struktur program paling sederhana. Ada beberapa syarat dalam pembuatan atau penggunaan file COM :

  1. Kode dan data program harus tidak lebih besar dari 64 KB.
  2. Tidak dapat memesan alamat memori melalui sistem operasi.

Contoh bentuk kode program COM, ketiklah di teks editor yang dapat menghasilkan file ASCII murni seperti Notepad, vi, atau lainnya. Simpan dengan nama COBAASM.ASM.

Versi TASM :
----------------------------------
ideal
p386n
model tiny

codeseg
org 100h
jmp start
;tempat data dan subrutin

start:
mov ax, 4c00h
int 21h
end
----------------------------------
Versi MASM :
----------------------------------
.386
.model tiny

.code
org 100h
entry:
jmp start
;tempat data dan subrutin

start:
mov ax, 4c00h
int 21h
end entry
----------------------------------

Compile-lah dengan perintah TASM.EXE COBAASM.ASM lalu dikuti dengan perintah TLINK.EXE /T COBAASM.OBJ, jika menggunakan compiler TASM. Untuk compiler MASM gunakan perintah ML COBAASM.ASM. Jika tak ada error, maka akan terlihat output seperti ini :

E:\PUSHM0~1\TASM3>tasm.exe cobaasm.asm
Turbo Assembler Version 3.0 Copyright (c) 1988, 1991 Borland International
Assembling file: cobaasm.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 460k

File yang dihasilkan dari proses kompilasi adalah file OBJ. Untuk merubah file OBJ ini menjadi sebuah file EXE atau COM kita perlu melakukan "linking" dengan program linker. Disini kita menggunakan TLINK.exe.

E:\PUSHM0~1\TASM3>tlink.exe /t cobaasm.obj
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International

Argumen /t pada tlink.exe berarti kita ingin membuat file COM dari file .obj yang dihasilkan oleh compiler. Sedangkan untuk membuat file EXE tidak perlu mengikutkan argumen /t.
Jalankan program COM tersebut :

E:\PUSHM0~1\TASM3>cobaasm.com

Apa yang terjadi? Tentunya tidak terjadi apa-apa karena kita belum menuliskan perintah untuk program tersebut. Jadi program cobaasm.com tersebut hanya diload ke memory lalu terminate dengan sendirinya.

Apa sih arti dari kode-kode diatas? lalu apa perbedaan antara kode yang ditulis untuk compiler TASM dengan MASM?
berikut adalah penjelasan lengkapnya...

  1. Perintah "ideal" berarti kita menggunakan syntax ideal dalanm compiler TASM.
  2. Perintah "p386n" atau ".386" berarti kita menggunakan intruksi prosesor 80386.
  3. Perintah "model tiny" atau ".tiny" berarti kita ingin menggunakan format file COM.
  4. Perintah "codeseg" atau ".code" adalah awal dari kode program kita.
  5. Perintah "org 100h" berarti program kita akan dimulai dari offset 100h.
  6. Dalam compiler MASM kita perlu mendeklarasikan entry point untuk program, disini kita gunakan label "entry:".
    Perlu diketahui kalau deklarasi sebuah label : "nama_label:".
  7. Program COM selalu diawali dengan "peloncatan" atau "jump" ke awal kode program. Perintah yang digunakan adalah "jmp" diikuti dengan nama label, misalnya "start". Bila diperhatikan, diantara perintah "jmp start" dan label "start" adalah tempat dimana kita bisa deklarasikan variabel-variabel ataupun data-data yang digunakan dalam program kita.
  8. Untuk mengakhiri jalannya program, kita perlu membuat suatu perintah. Perintah "end" atau "end entry" disini hanya menunjukkan akhir dari kode program, bukan untuk MENGAKHIRI proses. 2 perintah yang digunakan adalah :

    MOV AX, 4c00h
    int 21h

    Perintah MOV adalah perintah untuk menyalin isi data atau register ke suatu register lain. Bentuk umum perintah MOV :

    MOV tujuan_salin, asal_salin
    Pada perintah diatas kita akan menyalin atau lebih tepatnya "mengisi" register AX (lebih dikenal dengan register akumulator 16 bit) dengan bilangan heksa 4c00.
    Sedangkan perintah INT 21h berarti kita menjalankan interrupt sistem dengan fungsi 21h.

CoMpiler ModeL NUmeRik


Paper menyajikan desain prosesor bahasa domain-spesifik (domain-specific language (DSL)) yang mengunakan sebuah koleksi aljabar orde pertama, persamaan-persamaan differensial atau beda (difference) sebagai masukan dan menghasilkan sebuah kode executable yang mengerjakan/melaksanakan simulasi numerik real-time dari model yang dideskripsikan oleh persamaan-persamaan tersebut.

DSL merupakan suatu pendekatan rekayasa perangkat lunak umum yang dalam kasus ini memungkinkan (i) pengkodean yang mudah bagi berbagai variasi target, dan ii) enkapsulasi dan pemisahan yang baik model pemakai terhadap OS yang melingkupi dan lingkungan simulasi.

Fitur kunci dari desain adalah bahasa menengah yang merupakan sebuah varian dari lambda calculus yang diperkuat dengan semantik alokasi memori, sehingga memungkinak compiler membangkitkan sebuah representasi statis ’stack/heap’ yang digunakan oleh model, dan menjamin bahwa seluruh operasi memori melalui simulasi memiliki waktu konstan. Desain dideskripsikan disini menggunakan transformasi ‘type-preserving ‘ yang menjamin bahwa dengan model input yang benar secara sintaks, akan menghasilkan kode keluaran yang benar, dan tentunya menghemat memori juga.

KoMpiLaSi

Teknik Kompilasi

Merupakan Teknik dalam melakukan pembacaan suatu program yang ditulis dalam bahasa sumber, kemudian diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa sasaran.

Dalam melakukan proses penerjemahan tersebut, sudah barang tentu kompilator akan melaporkan adanya keanehan-keanehan atau kesalahan yang mungkin ditemukannya. Proses penerjemahan yang dilakukan oleh kompilator ini disebut proses kompilasi (compiling).

Bila dipandang sepintas lalu, maka akan timbul beranekaragam kompilator yang dapat dibuat,
- Bahasa Sumber seperti bahasa FORTRAN, PASCAL, C dan juga bahasa-bahasa lainnya yang sifat dan pemakaiannya agak spesifik atau khusus, seperti bahasa untuk program DBASE, SPSS dan lain sebagainya.
- Bahasa Sasaran dapat berupa bahasa sumber lain seperti C, FORTRAN dan lain sebagainya atau Bahasa Mesin (Machine Language) yang digunakan oleh suatu prosessor mikro atau sumber komputer besar maupun komputer super.

Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu pada saat mulai ditemukannya komputer pada awal 1950-an.

Sejak waktu tersebut teknik dan cara pembentukan suatu kompilator telah berkembang dengan sangat pesat dan pembentukkan suatu kompilator dapat dilakukan makin mudah.

Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah dapat diperoleh sehingga pembentukan suatu kompilator dapat dilakukan dengan cepat.

Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN yang pada saat itu dikembangkan dengan memakan sejumlah tenaga ahli yang setara dengan pekerjaan yang dilakukan oleh 18 orang.

Dengan adanya program bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta pendefinisian struktur bahasa yang cermat, maka suatu kompilator untuk bahasa yang terstruktur seperti PASCAL atau C dapat dikembangkan.


Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2 bagian utama yaitu bagian analisis dan bagian sintesis.

- Tahap analisis program yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam beberapa bagian yang kemudian akan dipresentasikan ke dalam suatu bentuk antara dari program sumber.
Operasi-operasi yang dilakukan oleh program sumber ditentukan dan dicatat dalam suatu struktur pohon (tree) yang disebut dengan nama pohon sintaks (sintax tree) Dalam hal ini setiap nodal pada tree tersebut menyatakan suatu operasi, sedangkan anak dari nodal (titik) tersebut memberikan argumen yang diperlukan
Secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu
a. Proses analisis leksikal
b. Proses analisis sintaktik
c. Proses analisis semantik

- Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi antara yang dihasilkan pada tahap analisis.
Untuk tahap sintetis terdiri dari 2 bagian utama, yaitu
a. Proses yang menghasilkan kode (code generator)
b. Proses optimasi kode (code optimizer)

Sebelum Bahasa sasaran dapat dihasilkan, dalam melakukan ini tiap bagian utama akan berhubungan dan berkomunikasi dengan suatu berkas tabel yang disebut tabel simbol (symbol table) yaitu suatu tabel yang berisi semua simbol yang digunakan dalam bahasa sumber.

Selain kompilator masih diperlukan beberapa program lainnya sebelum dapat dibentuk bahasa sasaran yang dapat dijalankan. Seperti suatu bahasa sumber dapat dituliskan dalam beberapa modul yang terpisah dan disimpan dalam beberapa file yang terpisah.

Untuk menanggulangi hal ini, maka suatu program khusus yang disebut dengan suatu praprosesor digunakan untuk mengumpulkan modul-modul yang saling lepas ini ke dalam suatu program baru. Praposesor dapat pula melengkapi singkatan-singkatan atau ungkapan-ungkapan maupun kependekan-kependekan yang digunakan dalam bahasa sumber seperti pendefinisian makro dan lain sebagainya.