Free Web Hosting by Netfirms
Web Hosting by Netfirms | Free Domain Names by Netfirms

 
 

SELAMAT DATANG DI WEBSITE
DUDY RUDIANTO (dudy@batam.com)

Front Page

Computer Science

Mengenal Bahasa Komputer


Assembly

Instruksi yang dilakukan oleh CPU, misalnya mengambil data dari memori dan melakukan eksekusi tidak semuanya dapat dipahami oleh bahasa aras tinggi yang di mengerti oleh manusia. Bahasa ini merupakan kode mesin yang akan memberitahukan kepada komputer untuk melakukan sesuatu. Sebagai contoh adalah perintah copy dari register ESP ke register EBP dari sebuah bilangan hexadesimal 0x89E5 yang merupakan instruksi Intel 80486.

Salah satu tool perangkat lunak yang digunakan pada awal-awal pengembangan komputer dikenal dengan assembler, sebuah program yang digunakan oleh manusia untuk dapat membaca kode sumber file dan diterjemahkan ke dalam kode mesin. Bahasa ini digunakan untuk menangani register-register dan operasi data dan digunakan secara khusus untuk perkerjaan-pekerjaan yang berhubungan dengan mikroprosesor. Bahasa assembly yang digunakan untuk Mikroprosessor Intel X86 berbeda dengan yang digunakan untuk Microprosesor Alpha AXP .

Berikut adalah contoh kode assembly untuk operasi pada Alpha AXP.


ldr r16, (r15) ; Baris 1

ldr r17, 4(r15) ; Baris 2

beq r16,r17,100 ; Baris 3

str r17, (r15) ; Baris 4

100: ; Baris 5


Pada baris pertama, statemen yang digunakan adalah load isi register 16 dari alamat 15. Instruksi berikutnya adalah load register 17 dari lokasi berikutnya di memori. Baris ketiga digunakan untuk membandingkan isi dari register 16 dengan register 17, dan jika nilainya sama maka akan menghasilkan nilai 100. Jika register tidak berisikan nilai yang sama, program akan melanjutkan operasi menuju baris ke empat di mana isi dari register 17 akan disimpan kedalam memori. Jika register-register tersebut berisikan data yang sama maka tidak ada data yang akan disimpan ke dalam memori. Program dalam bahasa assembly sangat besar kemungkinan terjadi adanya kesalahan yang dilakukan oleh programmer. Pengembangan linux sendiri sangat jarang mempergunakan bahasa assembly, akan tetapi pada bagian-bagian tertentu memang dituliskan dalam bahasa ini, dengan tujuan untuk efisiensi dan untuk pengerjaan operasi khusus, misalnya mikroprosesor.


Compiler dan Bahasa C

Menuliskan program yang cukup besar dalam bahasa Assembly bisa dikatakan relatif menjadi rumit, termasuk masalah portabilitas, dikarenakan sangat bergantung pada jenis keluarga prosesor yang digunakan untuk menuliskan program. Kebanyakan programer cenderung untuk menuliskan program dengan menggunakan bahasa pemrograman yang lebih independen terhadap spesifikasi perangkat keras tertentu seperti C. Dalam pemrograman dikenal adanya program khusus yang disebut dengan compiler yang akan membaca baris program C dan menterjemahkannya dalam bahasa assembly, kemudian melakukan generate sesuai dengan spesifikasi kode mesin yang digunakan. Banyak programer yang memberikan penilaian bahwa bahasa pemrograman yang baik harus dapat men-generate instruksi assembly yang hampir sama atau sama efisiensinya dengan program yang dituliskan dalam kode assembly langsung (David Rusling, 1996-1998). Seperti sudah disebutkan diatas, kebanyakan dari kernel Linux ditulis dengan menggunakan bahasa C. Berikut adalah potongan program yang dituliskan dalam kode bahasa C.


if (x != y)

x = y ;

Program diatas menampilkan operasi yang sama dengan contoh yang diberikan dalam kode assembly. Jika isi dari variabel x tidak sama dengan isi dari variabel y maka isi dari y akan di copy ke x.

Bahasa C banyak mendukung tipe-tipe variabel, sebuah variabel merupakan lokasi di memori yang dapat digunakan sebagai nama simbolik. Pada contoh di atas, variabel x dan y mengacu kepada lokasi di dalam memori. Umumnya, seorang programmer tidak perlu mengetahui di mana variabel akan diletakkan pada memori, hal ini secara otomatis sudah dikerjakan oleh linker. Beberapa variabel berisikan data yang berbeda, misalnya integer, floating point dan pointer-pointer lainnya.

Pointer merupakan variabel yang berisikan alamat, lokasi data di memori. Misalkan terdapat sebuah variabel sebut saja x, yang menempati alamat memori pada 0x80010000. Kemudian ada sebuah pointer yang kita sebut saja px, yang mengacu pada x. px berada pada alamat memori 0x80010003. Nilai dari px menjadi 0x80010000 yang merupakan alamat dari variabel x.


Linker

Linker merupakan program yang digunakan untuk melakukan link dari beberapa objek modul dan library menjadi satu. Modul-modul objek ini merupakan keluaran dari kode mesin dari hasil assembly atau kompiler dan berisikan kode mesin yang bersifat eksekutable dan data yang berisikan informasi yang akan mengijinkan sebuah linker untuk melakukan kombinasi modul-modul program menjadi satu. Sebagai contoh, sebuah modul bisa saja berisikan semua fungsi program database dan modul lainnya berisikan argumen perintah baris yang menangani berbagai fungsi. Linker digunakan untuk menjembatani modul objek-objek ini, di mana sebuah rutin atau struktur data yang berada pada satu modul dapat menjadi bagian dari modul lainnya.

Kernel Linux sendiri merupakan bagian yang bersifat tunggal, program-program yang besar di link bersama dengan berbagai macam objek modul lainnya. Contoh program aplikasi Linker di Linux adalah GNU ld yang dibuat oleh Free Software Foundation.



Link Linux

Project

Computer Science

BPL

OSRG

ksl online

Research

Artikel dan Tulisan

CV

Source Code



People

Eko Indrajit

M. Wiryana

Informasi Umum

Linux Indonesia

Dokumentasi Linux

KPLI Jogja

Linux for Newbie

Tim Pandu

Linux Programming

Situs Perl

PHP

GTK

QT

GCC

Python

Kernel

www.kernel.org

Kernel newbie

kernel note

Database

PostgreSQl

MySQL




© Copyright 2002 by dudy rudianto