Program
biasanya ditulis dalam bahasa tingkat tinggi, yang memungkinkan program untuk
menggunakan konstanta, variable local dan global, pointer, dan array. Pada saat
mentranslasi program bahsa tingkat tinggi menjadi bahsa assembly, compiler
harus mampu mengimplimentasi konstruksi ini menggunakan fasilitas yang
disediakan dalam set instruksi computer dimana program akan dijalankan. cara
yang berbeda dalam menentukan lokasi suatu operand ditetapkan dalam suatu
instruksi yang disebut sebagai mode pengalamatan.
Implementasi
variable dan konstanta
Variable
dan konstanta adalah tipe data yang paling sederhana dan terdapat dalam hampir
setiap program computer. Dalam bahasa assembly, suatu variable dinyatakan
dengan mengalokasikan suatu register atau lokasi memori untuk menyimpan
nilainya. Sehingga nilai tersebut dapat diubah seperlunya menggunakan instruksi
sesuai.
Kita
mengakses operand dengan menetapkan nama register atau alamat lokasi memori
tempat operand berada. Definisi yang presisi dari dua mode tersebut adalah:
a) Mode register operand adalah isi register
prosesor, nama alamat register dinyatakan dalam instruksi tersebut.
b) Mode absolute operand adalah lokasi
memori, alamat lokasi dinyatakan secara eksplisit didalam instruksi tersebut.
(pada bebrapa bahasa assembly, mode ini disebut direct).
c) Mode immediate operand dinyatakan secara
eksplisit dalam instruksi, misalnya, instruksi Move 200 immediete, RO.
Indirection
dan pointer
Pada
mode pengalamatan berikutnya, instruksi tidak menyatakana operand atau
alamatnya secara eksplisit. Sebaliknya, instruksi menyediakan informasi dari
nama alamat memori suatu operand dapat ditetapkan. Kita menyebut alamat ini
sebagai effective address (EA) suatu operand.
Selain
kesederhanaanya yang tampak jelas, pengalamatan indirect melalui memori telah
terbukti memiliki keterbatasan pengunaan sebagai mode pengalamatan, dan jarang
di gunakan dalam computer modern, pengalamatan indirect melalui register
digunakan secara luas. Maka pengalamatan indirect melalui register memungkinkan
untuk mengakses variable global dengan terlebih dahulu me-load alamat operand
dalam suatu register.
Secara
umum teknik addressing yang sering dilakukan adalah:
1.
Immediate addressing
Operand
(data yang akan dikomputasi) berada langsung pada set instruksi.
2. Direct Addressing
Operand
berada pada memori, set instruksi memegang alamat lokasi memori dimana operand
tersebut berada.
3. Indirect Addresing
Operand
berada pada memori, untuk mendapatkan operand ini CPU harus melakukan
penelusuran dua kali yaitu dari data alamat memori yang ada pada set instruksi
serta alamat yang ditunjuk oleh alamat memori yang diperoleh dari set instruksi
tadi.
4. Register addressing
Operand
berada pada register, cara kerjanya mirip dengan direct addressing hanya saja
CPU mengakses alamat register bukan alamat memori.
5. Register Indirect Addressing
Operand
berada pada memori, untuk mendapatkan operand CPU harus mengakses register
terlebih dahulu karena informasi lokasi operand berada pada register.
6. Displacement
Operand
berada pada memori, cara kerjanya merupakan gabungan dari teknik direct
addressing dan register indirect addressing.
7. Stack
Operand berada pada stack, operand secara
berkala dimasukan ke stack sehingga ketika
operand
dibutuhkan maka operand sudah berada pada “top of the stack”.
Teknik
pengalamatan tersebut harus dapat memenuhi kebutuhan komputasi yang dilakukan
oleh computer yang secara garis besar dapat dibagi kedalam tiga kategori yaitu:
- Operasi load (memasukan data).
- Operasi branch (percabangan).
- Operasi aritmatik dan logika.
Tidak ada komentar:
Posting Komentar