Kamis, 25 Oktober 2007

Algoritma genetik



Algoritma genetik adalah teknik pencarian yang di dalam ilmu komputer untuk menemukan penyelesaian perkiraan untuk optimisasi dan masalah pencarian. Algoritma genetik adalah kelas khusus dari algoritma evolusioner dengan menggunakan teknik yang terinspirasi oleh biologi evolusioner seperti warisan, mutasi, seleksi alam dan rekombinasi (atau crossover)
Algoritma Genetik pertama kali dikembangkan oleh John Holland pada tahun 1970-an di New York, Amerika Serikat. Dia beserta murid-murid dan teman kerjanya menghasilkan buku berjudul "Adaption in Natural and Artificial Systems" pada tahun 1975.
Algoritma Genetik khususnya diterapkan sebagai simulasi komputer dimana sebuah populasi representasi abstrak (disebut kromosom) dari solusi-solusi calon (disebut individual) pada sebuah masalah optimisasi akan berkembang menjadi solusi-solusi yang lebih baik. Secara tradisional, solusi-solusi dilambangkan dalam biner sebagai string '0' dan '1', walaupun dimungkinkan juga penggunaan penyandian (encoding) yang berbeda. Evolusi dimulai dari sebuah populasi individual acak yang lengkap dan terjadi dalam generasi-generasi. Dalam tiap generasi, kemampuan keseluruhan populasi dievaluasi, kemudian multiple individuals dipilih dari populasi sekarang (current) tersebut secara stochastic (berdasarkan kemampuan mereka), lalu dimodifikasi (melalui mutasi atau rekombinasi) menjadi bentuk populasi baru yang menjadi populasi sekarang (current) pada iterasi berikutnya dari algoritma.

Prosedur Algoritma Genetik
Algoritma genetik yang umum menyaratkan dua hal untuk didefinisikan: (1) representasi genetik dari penyelesaian, (2) fungsi kemampuan untuk mengevaluasinya.
Representasi baku adalah sebuah larik bit-bit. Larik jenis dan struktur lain dapat digunakan dengan cara yang sama. Hal utama yang membuat representasi genetik ini menjadi tepat adalah bahwa bagian-bagiannya mudah diatur karena ukurannya yang tetap, yang memudahkan operasi persilangan sederhana. Representasi panjang variabel juga digunakan, tetapi implementasi persilangan lebih kompleks dalam kasus ini. Representasi seperti pohon diselidiki dalam pemrograman genetik dan representasi bentuk bebas diselidiki di dalam HBGA.
Fungsi kemampuan didefinisikan di atas representasi genetik dan mengukur kualitas penyelesaian yang diwakili. Fungsi kemampuan selalu tergantung pada masalah. Sebagai contoh, jika pada ransel kita ingin memaksimalkan jumlah benda (obyek) yang dapat kita masukkan ke dalamnya pada beberapa kapasitas yang tetap. Representasi penyelesaian mungkin berbentuk larik bits, dimana tiap bit mewakili obyek yang berbeda, dan nilai bit (0 atau 1) menggambarkan apakah obyek tersebut ada di dalam ransel atau tidak. Tidak setiap representasi seperti ini valid, karena ukuran obyek dapat melebihi kapasitas ransel. Kemampuan penyelesaian adalah jumlah nilai dari semua obyek di dalam ransel jika representasi itu valid, atau jika tidak 0. Dalam beberapa masalah, susah atau bahkan tidak mungkin untuk mendefinisikan lambang kemampuan, maka pada kasus ini digunakan IGA.
Sekali kita mendefinisikan representasi genetik dan fungsi kemampuan, algoritma genetik akan memproses inisialisasi populasi penyelesaian secara acak, dan memperbaikinya melalui aplikasi pengulangan dengan aplikasi operator-operator mutasi, persilangan, dan seleksi.
Secara sederhana, algoritma umum dari algoritma genetik ini dapat dirumuskan menjadi beberapa langkah, yaitu:
1. Membentuk suatu populasi individual dengan keadaan acak
2. Mengevaluasi kecocokan setiap individual keadaan dengan hasil yang diinginkan
3. Memilih individual dengan kecocokan yang tertinggi
4. Bereproduksi, mengadakan persilangan antar individual terpilih diselingi mutasi
5. Mengulangi langkah 2 - 4 sampai ditemukan individual dengan hasil yang diinginkan.

aRtifiCiaL iNtelligencE


Kecerdasan Buatan (bahasa Inggris: Artificial Intelligence atau AI) didefinisikan sebagai kecerdasan yang ditunjukkan oleh suatu entitas buatan. Sistem seperti ini umumnya dianggap komputer. Kecerdasan diciptakan dan dimasukkan ke dalam suatu mesin (komputer) agar dapat melakukan pekerjaan seperti yang dapat dilakukan manusia. Beberapa macam bidang yang menggunakan kecerdasan buatan antara lain sistem pakar, permainan komputer (games), logika fuzzy, jaringan syaraf tiruan dan robotika.
Banyak hal yang kelihatannya sulit untuk kecerdasan manusia, tetapi untuk Informatika relatif tidak bermasalah. Seperti contoh: mentransformasikan persamaan, menyelesaikan persamaan integral, membuat permainan catur atau Backgammon. Di sisi lain, hal yang bagi manusia kelihatannya menuntut sedikit kecerdasan, sampai sekarang masih sulit untuk direalisasikan dalam Informatika. Seperti contoh: Pengenalan Obyek/Muka, bermain Sepakbola.
Walaupun AI memiliki konotasi fiksi ilmiah yang kuat, AI membentuk cabang yang sangat penting pada ilmu komputer, berhubungan dengan perilaku, pembelajaran dan adaptasi yang cerdas dalam sebuah mesin. Penelitian dalam AI menyangkut pembuatan mesin untuk mengotomatisasikan tugas-tugas yang membutuhkan perilaku cerdas. Termasuk contohnya adalah pengendalian, perencanaan dan penjadwalan, kemampuan untuk menjawab diagnosa dan pertanyaan pelanggan, serta pengenalan tulisan tangan, suara dan wajah. Hal-hal seperti itu telah menjadi disiplin ilmu tersendiri, yang memusatkan perhatian pada penyediaan solusi masalah kehidupan yang nyata. Sistem AI sekarang ini sering digunakan dalam bidang ekonomi, obat-obatan, teknik dan militer, seperti yang telah dibangun dalam beberapa aplikasi perangkat lunak komputer rumah dan video game.
'Kecerdasan buatan' ini bukan hanya ingin mengerti apa itu sistem kecerdasan, tapi juga mengkonstruksinya.
Tidak ada definisi yang memuaskan untuk 'kecerdasan':
kecerdasan: kemampuan untuk memperoleh pengetahuan dan menggunakannya
atau kecerdasan yaitu apa yang diukur oleh sebuah 'Test Kecerdasan'

Faham Pemikiran
Secara garis besar, AI terbagi ke dalam dua faham pemikiran yaitu AI Konvensional dan Kecerdasan Komputasional (CI, Computational Intelligence). AI konvensional kebanyakan melibatkan metoda-metoda yang sekarang diklasifiksikan sebagai pembelajaran mesin, yang ditandai dengan formalisme dan analisis statistik. Dikenal juga sebagai AI simbolis, AI logis, AI murni dan AI cara lama (GOFAI, Good Old Fashioned Artificial Intelligence).

Metoda-metodanya meliputi:
Sistem pakar: menerapkan kapabilitas pertimbangan untuk mencapai kesimpulan. Sebuah sistem pakar dapat memproses sejumlah besar informasi yang diketahui dan menyediakan kesimpulan-kesimpulan berdasarkan pada informasi-informasi tersebut.
Petimbangan berdasar kasus
Jaringan Bayesian
AI berdasar tingkah laku: metoda modular pada pembentukan sistem AI secara manual
Kecerdasan komputasional melibatkan pengembangan atau pembelajaran iteratif (misalnya penalaan parameter seperti dalam sistem koneksionis. Pembelajaran ini berdasarkan pada data empiris dan diasosiasikan dengan AI non-simbolis, AI yang tak teratur dan perhitungan lunak. Metoda-metoda pokoknya meliputi:
Jaringan Syaraf: sistem dengan kemampuan pengenalan pola yang sangat kuat
Sistem Fuzzy: teknik-teknik untuk pertimbangan di bawah ketidakpastian, telah digunakan secara meluas dalam industri modern dan sistem kendali produk konsumen.
Komputasi Evolusioner: menerapkan konsep-konsep yang terinspirasi secara biologis seperti populasi, mutasi dan “survival of the fittest” untuk menghasilkan pemecahan masalah yang lebih baik.
Metoda-metoda ini terutama dibagi menjadi algoritma evolusioner (misalnya algoritma genetik) dan kecerdasan berkelompok (misalnya algoritma semut)
Dengan sistem cerdas hibrid, percobaan-percobaan dibuat untuk menggabungkan kedua kelompok ini. Aturan inferensi pakar dapat dibangkitkan melalui jaringan syaraf atau aturan produksi dari pembelajaran statistik seperti dalam ACT-R. Sebuah pendekatan baru yang menjanjikan disebutkan bahwa penguatan kecerdasan mencoba untuk mencapai kecerdasan buatan dalam proses pengembangan evolusioner sebagai efek samping dari penguatan kecerdasan manusia melalui teknologi.

Sejarah
Artikel utama: Sejarah kecerdasan buatan
Pada awal abad 17, René Descartes mengemukakan bahwa tubuh hewan bukanlah apa-apa melainkan hanya mesin-mesin yang rumit. Blaise Pascal menciptakan mesin penghitung digital mekanis pertama pada 1642. Pada 19, Charles Babbage dan Ada Lovelace bekerja pada mesin penghitung mekanis yang dapat diprogram.
Bertrand Russell dan Alfred North Whitehead menerbitkan Principia Mathematica, yang merombak logika formal. Warren McCulloch dan Walter Pitts menerbitkan "Kalkulus Logis Gagasan yang tetap ada dalam Aktivitas " pada 1943 yang meletakkan pondasi untuk jaringan syaraf.
Tahun 1950-an adalah periode usaha aktif dalam AI. Program AI pertama yang bekerja ditulis pada 1951 untuk menjalankan mesin Ferranti Mark I di University of Manchester (UK): sebuah program permainan naskah yang ditulis oleh Christopher Strachey dan program permainan catur yang ditulis oleh Dietrich Prinz. John McCarthy membuat istilah "kecerdasan buatan " pada konferensi pertama yang disediakan untuk pokok persoalan ini, pada 1956. Dia juga menemukan bahasa pemrograman Lisp. Alan Turing memperkenalkan "Turing test" sebagai sebuah cara untuk mengoperasionalkan test perilaku cerdas. Joseph Weizenbaum membangun ELIZA, sebuah chatterbot yang menerapkan psikoterapi Rogerian.
Selama tahun 1960-an dan 1970-an, Joel Moses mendemonstrasikan kekuatan pertimbangan simbolis untuk mengintegrasikan masalah di dalam program Macsyma, program berbasis pengetahuan yang sukses pertama kali dalam bidang matematika. Marvin Minsky dan Seymour Papert menerbitkan Perceptrons, yang mendemostrasikan batas jaringan syaraf sederhana dan Alain Colmerauer mengembangkan bahasa komputer Prolog. Ted Shortliffe mendemonstrasikan kekuatan sistem berbasis aturan untuk representasi pengetahuan dan inferensi dalam diagnosa dan terapi medis yang kadangkala disebut sebagai sistem pakar pertama. Hans Moravec mengembangkan kendaraan terkendali komputer pertama untuk mengatasi jalan berintang yang kusut secara mandiri.
Pada tahun 1980-an, jaringan syaraf digunakan secara meluas dengan algoritma perambatan balik, pertama kali diterangkan oleh Paul John Werbos pada 1974. Tahun 1990-an ditandai perolehan besar dalam berbagai bidang AI dan demonstrasi berbagai macam aplikasi. Lebih khusus Deep Blue, sebuah komputer permainan catur, mengalahkan Garry Kasparov dalam sebuah pertandingan 6 game yang terkenal pada tahun 1997. DARPA menyatakan bahwa biaya yang disimpan melalui penerapan metode AI untuk unit penjadwalan dalam Perang Teluk pertama telah mengganti seluruh investasi dalam penelitian AI sejak tahun 1950 pada pemerintah AS.
Tantangan Hebat DARPA, yang dimulai pada 2004 dan berlanjut hingga hari ini, adalah sebuah pacuan untuk hadiah $2 juta dimana kendaraan dikemudikan sendiri tanpa komunikasi dengan manusia, menggunakan GPS, komputer dan susunan sensor yang canggih, melintasi beberapa ratus mil daerah gurun yang menantang.

Filosofi
Artikel utama: Filosofi kecerdasan buatan
Perdebatan tentang AI yang kuat dengan AI yang lemah masih menjadi topik hangat diantara filosof AI. Hal ini melibatkan filsafat pemikiran dan masalah pikiran-tubuh. Roger Penrose dalam bukunya The Emperor's New Mind dan John Searle dengan eksperimen pemikiran "ruang China" berargumen bahwa kesadaran sejati tidak dapat dicapai oleh sistem logis formal, sementara Douglas Hofstadter dalam Gödel, Escher, Bach dan Daniel Dennett dalam Consciousness Explained memperlihatkan duukungannya atas fungsionalisme. Dalam pendapat banyak pendukung AI yang kuat, kesadaran buatan dianggap sebagai urat suci (holy grail) kecerdasan buatan.

Fiksi sains
Dalam fiksi sains, AI umumnya dilukiskan sebagai kekuatan masa depan yang akan mencoba menggulingkan otoritas manusia seperti dalam HAL 9000, Skynet, Colossus and The Matrix atau sebagai penyerupaan manusia untuk memberikan layanan seperti C-3PO, Data, the Bicentennial Man, the Mechas dalam A.I. atau Sonny dalam I, Robot. Sifat dominasi dunia AI yang tak dapat dielakkan, kadang-kadang disebut "the Singularity", juga dibantah oleh beberapa penulis sains seperti Isaac Asimov, Vernor Vinge dan Kevin Warwick. Dalam pekerjaan seperti manga Ghost in the Shell-nya orang Jepang, keberadaan mesin cerdas mempersoalkan definisi hidup sebagai organisme lebih dari sekedar kategori entitas mandiri yang lebih luas, membangun konsep kecerdasan sistemik yang bergagasan. Lihat daftar komputer fiksional(list of fictional computers) dan daftar robot dan android fiksional (list of fictional robots and androids).
Seri televisi BBC Blake's 7 menonjolkan sejumlah komputer cerdas, termasuk Zen (Blake's 7), kompuer kontrol pesawat bintang Liberator (Blake's 7); Orac, superkomputer lanjut tingkat tinggi dalam kotak perspex portabel yang mempunyai kemampuan memikirkan dan bahkan memprediksikan masa depan; dan Slave, komputer pada pesawat bintang Scorpio.

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.