Mikropengaturcaraan

Apakah yg  dimaksudkan dgn:

i. Assembly language
ii. Assembler
iii. Compiler
iv. Loader
v. Linker

Assembly language

Anda sebagai programmer wajib mengetahui apakah jenis senibina komputer yang akan menjadi platform program kita, kecuali kita hanya ingin membina program Java. Oleh itu, anda akan mengetahui kelebihan, had, dan sebagainya yang ditawarkan oleh sesuatu mikropemproses mengeksploitasinya untuk membina program yang lebih laju dan kurang menggunakan ruangan memory. Di sini kita hanya akan membincangkan mengenai platform 80×86 di mana senibina ini telah digunakan selama lebih kurang 30 tahun dan sentiasa berevolusi. Senibina ini dicipta oleh Intel dan terdapat juga klon untuk 80×86 yang dibina oleh AMD.

Untuk melakukan pengiraan, Register diperlukan sebagai tempat ruang simpanan sementara. Ada lapan ‘general purpose register’ iaitu EAX, EBX, ECX, EDX, ESI, EDI, EBP, and ESP. Di mana,

Accumulator [E]AX (AH/AL) Multiply, divide, I/O, fast arithmetic.
Base [E]BX (BH/BL) Pointer to base address (data segment).
Count [E]CX (CH/CL) Count for loops, repeats, and shifts.
Data [E]DX (DH/DL) Multiply, divide, and I/O.

Source Index [E]SI Source string and index pointer.
Destination Index [E]DI Destination string and index pointer.
Base Pointer [E]BP Pointer to stack base address.
Stack Pointer [E]SP Pointer to top of stack.

[E] bermaksud ‘extended’ ataupun lanjutan kepada 32 bit.Oleh itu 32 bit register boleh menyimpan nilai sehingga 0xFFFFFFF. Bahagian bawah EAX ialah AX yang boleh menyimpan nilai sehingga 0xFFFF (16 bit). Bagi AX pula boleh dipecahkan kepada bahagian atas iaitu AH, dan bahagian bawah iaitu AL. Sebagai contoh:-
jika EAX == CF3922DB2
maka AX == 2DB2 , AH == 2D, dan AL == B2.

Asas pengaturcaraan bahasa perhimpunan

a. MOV destinasi, sumber

MOV bermaksud ‘move’ atau pindahkan nilai dari sumber kepada destinasi. Destinasi boleh jadi mana-mana register atau alamat memori. Tetapi sumber boleh jadi nilai segera, register atau alamat memori.

Contoh 1:

Sebelum : EAX = 0x000FFF0F, ECX = 0x00000000, EBX = 0xFE01FCD0, ESP = 0x004AA000
MOV EAX, 0x00965695 ;0x00965695 adalah nilai segera
MOV ECX, EAX ; nilai dari EAX dipindahkan kepada ECX
MOV DWORD PTR [ESP], EBX ; nilai EBX dipindahkan ke ruang memori
MOV DWORD PTR [ESP+4], EAX ; ESP + 4 == 0x004AA004
MOV DWORD PTR [0x004AA008], 0x0004AEFC ; nilai segera ke ruang memori

Selepas : EAX = 0x00965695, ECX = 0x00965695, EBX = 0xFE01FCD0, ESP = 0x004AA000
manakala bagi nilai dalam memori
Alamat | Nilai
—————+————-
0x004AA000 | 0xFE01FCD0
0x004AA004 | 0x00965695
0x004AA008 | 0x0004AEFC

Jika diperhatikan, nilai EBX tidak berubah. Ini kerana arahan MOV hanya menyalin nilai dan mengekalkan nilai sumber.
Walaubagaimanapun, arahan MOV untuk menyalin nilai dari memori ke memori tidak dibenarkan. Oleh itu,
MOV DWORD PTR [0x004AA008], DWORD PTR [0x004AA004]
tidak dibenarkan.

DWORD (double word) bermaksud nilai yang hendak dipindahkan dalam lingkungan 32 bit ( 0x00000000 – 0xFFFFFFF).

b. ADD destinasi, sumber (operasi tambah)

Sebelum : EAX = 0x0166AABB, ECX = 0x0002A23C
ADD EAX, ECX ; 0x0166AABB + 0x0002A23C = 0x01694CF7
; hasil tambah disimpan dalam EAX
ADD ECX, 0xA484AFE1 ; 0x0002A23C + 0xA484AFE1 = 0xA487521D
; hasil tambah disimpan dalam ECX

Selepas: EAX = 0x01694CF7, ECX = 0xA487521D

Assembler

Penghimpun di gunakan untuk menukarkan bahasa bersimbol ke bahasa mesin.

Compiler

Aturcara Pengkompil menerima teks aturcara(dikenali sebagai Kod Sumber) sebagai data input, dan membekalkan kod objek sebagai output. Kod Objek yang dihasilkan adalah kod mesin yang boleh dilarikan secara terus oleh CPU komputer, atau kod yang padan dengan spesifikasi Mesin Maya(Virtual Machine).

Loader
• Pemuat ialah perisian sistem yang berfungsi untuk memuatkan aturcara objek ke dalam ingatan bagi membolehkan ia dilaksanakan
• Kebanyakan Pemuat menyokong penempatan semula (relocation) dan pemautan
• Jika Pemuat tidak menyokong pemautan, sistem perlu menyediakan Pemuat yang berasingan
• Disamping itu juga Pemuat melakukan pengikatan iaitu menukarkan alamat relatif kepada alamat sebenar.

Linker
• Mengumpulkan prosidur-prosidur yang telah diterjemahkan secara berasingan dan memautkan kesemuanya untuk dilaksanakan.
• Satu unit ini dikenali sebagai modul muatan.
• Kenapa prosidur diterjemahkan berasingan?
o Jika semua prosidur diterjemahkan bersama, maka sebarang perubahan dalam satu prosidur memerlukan penterjemahan semula keseluruhan aturcara tersebut.
o Ini tidak berlaku jika prosidur diterjemahkan secara berasingan kerana sebarang perubahan pada mana-mana prosidur hanya memerlukan terjemahan dilakukan bagi prosidur itu sahaja

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: