BAB I
PENDAHULUAN
Addressing Mode merupakan aspek
dari set instruksi arsitektur di sebagian unit pengolah pusat (CPU) desain. Mode
pengalamatan berbagai yang didefinisikan dalam set instruksi arsitektur
diberikan menentukan bagaimana bahasa mesin petunjuk dalam arsitektur yang
mengidentifikasi operan (atau operan) dari setiap instruksi. Sebuah mode pengalamatan menentukan
bagaimana menghitung alamat memori yang efektif dari operand dengan menggunakan
informasi yang diadakan di register dan / atau konstanta yang terkandung
dalam instruksi mesin atau di tempat lain.Dalam pemrograman komputer , mode pengalamatan
merupakan kepentingan utama untuk compiler penulis dan kepada mereka yang menulis kode langsung
dalam bahasa assembly .
Tidak ada cara yang berlaku umum penamaan berbagai mode pengalamatan. Secara khusus, penulis yang berbeda dan
produsen komputer mungkin memberikan nama yang berbeda untuk mode pengalamatan
yang sama, atau nama yang sama untuk mode pengalamatan yang berbeda. Selanjutnya, mode pengalamatan yang, di satu
arsitektur tertentu, diperlakukan sebagai mode pengalamatan tunggal dapat
mewakili fungsionalitas yang, di arsitektur lain, ditutupi oleh dua atau lebih
mode pengalamatan. Sebagai contoh, beberapa instruksi kompleks mengatur komputer
(CISC) arsitektur komputer, seperti Digital Equipment Corporation (DEC) VAX , register merawat dan literal / konstanta segera hanya sebagai
mode pengalamatan yang lain. Lainnya, seperti IBM System/390 dan paling mengatur mengurangi instruksi komputer (RISC) desain,
menyandikan informasi ini dalam instruksi. Dengan demikian,
mesin-mesin yang terakhir memiliki tiga kode instruksi yang berbeda untuk
menyalin satu mendaftar ke yang lain, menyalin sebuah konstanta literal ke
register, dan menyalin isi dari suatu lokasi memori ke register, sedangkan VAX
hanya memiliki satu "MOV" instruksi.
BAB II
PEMBAHASAN
A.Pengertian
1. Mode Pengalamatan
The "mode pengalamatan"
istilah itu sendiri tunduk pada interpretasi yang berbeda: baik "alamat
memori perhitungan mode" atau "mode mengakses operan".
Berdasarkan petunjuk interpretasi pertama yang tidak membaca dari memori atau
menulis ke memori (seperti "menambahkan literal untuk mendaftarkan")
dianggap tidak memiliki "mode pengalamatan".
Penafsiran kedua
memungkinkan untuk mesin seperti VAX yang menggunakan modus operan bit untuk
memungkinkan suatu operan literal. Hanya interpretasi pertama berlaku untuk instruksi seperti
"alamat beban efektif".Berbagai mode pengalamatan tercantum di bawah ini dibagi ke
dalam kode pengalamatan dan data pengalamatan. Kebanyakan arsitektur komputer mempertahankan
perbedaan ini, tetapi ada, atau telah, beberapa arsitektur yang memungkinkan
(hampir) semua mode pengalamatan untuk digunakan dalam konteks apapun.Petunjuk
di bawah ini merupakan murni representatif untuk menggambarkan mode
pengalamatan, dan tidak selalu mencerminkan memonik yang digunakan oleh
komputer tertentu.
2.Bahasa
Assembler
B. MACAM-MACAM MODE PENGALAMATAN
1. Mode Pengalamatan Untuk Kode
1.1.
Mutlak
+----+------------------------------+
| Lompat | alamat |
+----+------------------------------+
(Efektif alamat PC = alamat)
Alamat
efektif untuk alamat instruksi mutlak adalah parameter alamat itu sendiri tanpa
modifikasi.
1.2.PC-relatif
+----+------------------------------+
| Lompat | offset | lompat relatif
+----+------------------------------+
(PC alamat Efektif = alamat instruksi
berikutnya + offset, offset mungkin
negatif)
Alamat yang efektif untuk PC instruksi alamat relatif-adalah parameter
offset ditambahkan ke alamat instruksi berikutnya. Offset ini biasanya masuk untuk
memungkinkan referensi kode baik sebelum dan sesudah instruksi. Hal ini sangat berguna dalam hubungannya dengan melompat, karena
lompatan khas adalah instruksi dekat (dalam tingkat bahasa yang paling tinggi jika atau ketika laporan yang cukup singkat).
Pengukuran program sebenarnya menunjukkan bahwa 8 atau 10 bit offset cukup
besar untuk beberapa 90% dari kondisional.
Keuntungan lain
dari program-relatif menangani adalah bahwa kode tersebut mungkin posisi-independen , yakni dapat dimuat di mana
saja dalam memori tanpa perlu untuk menyesuaikan setiap alamat. Beberapa versi dari mode
pengalamatan mungkin bersyarat mengacu pada dua register ("lompat jika
reg1 = reg2"), satu register ("lompat kecuali reg1 = 0") atau
tidak register, secara implisit mengacu pada beberapa set-bit sebelumnya dalam status register . Lihat juga eksekusi
kondisional di bawah ini.
1.3. Pendaftaran tidak langsung
+-------+-----+
| JumpVia | reg |
+-------+-----+
(Alamat PC Efektif = isi
register 'reg')
Alamat yang efektif untuk sebuah instruksi Register
tidak langsung adalah alamat di register tertentu.
Sebagai contoh, (A7) untuk mengakses konten dari alamat register A7.Efeknya adalah untuk
mentransfer kontrol ke instruksi yang alamatnya di register tertentu.Banyak
mesin RISC memiliki instruksi panggilan subroutine yang menempatkan alamat kembali dalam alamat register-register
mode pengalamatan tidak langsung digunakan untuk kembali dari panggilan
subroutine.
2. Mode
pengalamatan Sequential
2.1.
eksekusi
sekuensial
+------+
| Nop | mengeksekusi instruksi
berikut
+------+
(PC alamat Efektif = alamat
instruksi berikutnya)
CPU, setelah menjalankan
instruksi berurutan, segera mengeksekusi instruksi berikut.Sequential eksekusi tidak dianggap
sebagai mode pengalamatan pada beberapa komputer.Sebagian besar instruksi pada arsitektur CPU sebagian besar
instruksi berurutan.
Karena sebagian besar instruksi instruksi berurutan, desainer CPU sering
menambahkan fitur yang sengaja mengorbankan kinerja di sisi lain
instruksi-instruksi cabang-dalam rangka untuk membuat instruksi ini berurutan
berjalan lebih cepat.cabang Bersyarat beban PC dengan salah satu dari 2
hasil yang mungkin, tergantung pada kondisi-arsitektur CPU yang paling
menggunakan beberapa mode pengalamatan lainnya untuk cabang
"diambil", dan eksekusi sekuensial untuk cabang "tidak
diambil".
Banyak fitur dalam CPU modern prefetch instruksi dan lebih kompleks pipelineing , Out-of-order eksekusi , dll mempertahankan
ilusi bahwa setiap instruksi selesai sebelum berikutnya dimulai, memberikan
hasil akhir yang sama, meskipun itu tidak persis apa yang terjadi secara
internal.
Setiap " blok dasar "seperti pameran instruksi
berurutan baik temporal dan spasial locality of reference . CPU yang tidak
menggunakan eksekusi berurutan dengan sebuah program counter yang sangat
jarang. Dalam beberapa CPU,
setiap instruksi selalu menentukan alamat instruksi berikutnya.
CPU seperti ini memiliki penunjuk instruksi yang menyatakan bahwa alamat yang
ditentukan, tetapi mereka tidak memiliki program counter yang lengkap.
CPU tersebut mencakup beberapa drum memori komputer, SECD mesin , dan Rtx 32P.Arsitektur
komputasi lain pergi lebih jauh, mencoba untuk melewati kemacetan von Neumann menggunakan berbagai
alternatif program counter .
2.2. eksekusi
kondisional
Beberapa arsitektur komputer (seperti ARM ) memiliki instruksi bersyarat (atau beban
bersyarat, seperti x86) yang dalam beberapa kasus dapat meniadakan kebutuhan
untuk cabang bersyarat dan menghindari penggelontoran pipa instruksi . Suatu instruksi seperti 'membandingkan' digunakan untuk
menetapkan kode kondisi , dan instruksi berikutnya
termasuk tes pada yang kode kondisi untuk melihat apakah mereka dipatuhi atau
diabaikan.
2.3. skip
+------+-----+-----+
| SkipEQ | reg1
| reg2 | melewatkan instruksi berikut jika reg1 = reg2
+------+-----+-----+
(PC alamat Efektif =
instruksi alamat berikutnya + 1)
Skip menangani dapat
dianggap sebagai jenis khusus mode pengalamatan PC-relatif dengan tetap
"+1" offset. Seperti PC-relatif
pengalamatan, beberapa CPU memiliki versi dari mode pengalamatan yang hanya
merujuk pada salah satu register ("skip jika reg1 = 0") atau tidak
register, secara implisit mengacu pada beberapa set-bit sebelumnya dalam status register . CPU
lain memiliki versi yang memilih sedikit tertentu dalam byte tertentu untuk
menguji ("skip jika sedikit 7 dari reg12 adalah 0").Tidak seperti semua cabang
kondisional lainnya, "skip" instruksi tidak perlu menyiram pipa instruksi , meskipun mungkin perlu
menyebabkan instruksi berikutnya untuk diabaikan.
3.Mode
Pengalamatan Untuk Data
3.1. Pendaftaran
+------+-----+-----+-----+
| Mul | reg1 | reg2 | reg3
| reg1: = reg2 * reg3;
+------+-----+-----+-----+
Ini "mode pengalamatan" tidak memiliki alamat yang efektif dan tidak
dianggap sebagai mode pengalamatan pada beberapa komputer. Dalam contoh ini, semua
operand berada dalam register, dan hasilnya ditempatkan di register.
3.2. Base plus
offset, dan variasi
Hal ini kadang-kadang disebut 'dasar ditambah perpindahan
sebagai
+------+-----+-----+----------------+
| Load | reg |
base | offset | reg: = RAM [base + offset]
+------+-----+-----+----------------+
(Alamat Efektif
= offset + isi dari base register yang ditentukan)
Jika offset adalah nol, ini menjadi contoh dari register
pengalamatan tidak langsung, alamat efektif hanya nilai dalam register
dasar.Pada mesin RISC banyak, register 0 adalah
tetap sebesar nilai nol. Jika register 0 digunakan sebagai register dasar, ini menjadi sebuah
contoh dari pengalamatan mutlak. Namun, hanya sebagian
kecil dari memori dapat diakses (64 kilobyte , jika offset adalah 16 bit).16-bit offset mungkin
tampak sangat kecil sehubungan dengan ukuran memori komputer saat ini (yang
mengapa 80386 diperluas ke 32-bit). Ini bisa lebih buruk: IBM System/360 mainframe
hanya memiliki 12-bit unsigned offset. Namun, prinsip locality of reference berlaku: selama rentang
waktu yang singkat, sebagian besar item data program ingin mengakses cukup
dekat satu sama lain. Mode
pengalamatan ini terkait erat dengan mode pengalamatan terindeks mutlak.
Contoh 1:
Dalam sebuah sub rutin programmer terutama akan tertarik dengan parameter dan
variabel lokal, yang jarang akan melebihi 64 KB , yang satu basis register (yang frame pointer ) sudah cukup. Jika rutin ini adalah metode kelas dalam bahasa
berorientasi objek, kemudian register dasar kedua diperlukan yang menunjuk pada
atribut untuk objek saat ini (ini atau diri dalam beberapa bahasa
tingkat tinggi).
3.3. Segera /
literal
+------+-----+-----+----------------+
| Add | reg1 |
reg2 | konstanta | reg1: = reg2 + konstan;
+------+-----+-----+----------------+
Ini
"mode pengalamatan" tidak memiliki alamat yang efektif, dan tidak
dianggap sebagai mode pengalamatan pada beberapa komputer.Konstanta
mungkin ditandatangani atau unsigned. Sebagai contoh move.l # $
FEEDABBA, D0 untuk memindahkan nilai hex langsung dari "FEEDABBA" ke
D0 mendaftar.Alih-alih menggunakan operand dari memori, nilai operan diadakan
dalam instruksi itu sendiri.
Pada mesin VAX Desember, ukuran operan harfiah bisa 6, 8, 16, atau 32 bit
panjang. Andrew Tanenbaum menunjukkan bahwa 98% dari
semua konstanta dalam sebuah program akan masuk dalam 13.
3.4. Implisit
+-----------------+
| Bit jelas membawa |
+-----------------+
Mode pengalamatan yang tersirat, juga disebut mode
pengalamatan implisit X86 bahasa assembly , tidak secara eksplisit
menetapkan alamat yang efektif baik untuk sumber atau tujuan (atau
kadang-kadang keduanya).Entah sumber (jika ada) atau alamat tujuan yang efektif
(atau kadang-kadang keduanya) tersirat oleh opcode.Tersirat menangani cukup umum pada komputer lama (sampai
dengan pertengahan 1970-an). komputer tersebut biasanya hanya memiliki
register tunggal di mana aritmatika dapat dilakukan-akumulator. Seperti mesin akumulator implisit referensi yang
akumulator di hampir setiap instruksi. Sebagai
contoh, <a operasi := b + c;> dapat dilakukan dengan menggunakan urutan
b; <load add c; a;> toko - tujuan (akumulator) yang tersirat dalam setiap
"beban" dan "add" instruksi, sumber (akumulator) yang
tersirat dalam setiap instruksi "toko".Kemudian komputer umumnya memiliki lebih dari satu register tujuan umum atau lokasi RAM yang
dapat menjadi sumber atau tujuan atau keduanya untuk aritmatika-dan begitu
kemudian komputer membutuhkan beberapa mode pengalamatan lainnya untuk
menentukan sumber dan tujuan aritmatika.
4.Mode
Pengalamatan Lain Untuk Kode Atau Data
4.1. Absolute / Direct
+------+-----+------------------------------------ - +
| Load | reg | alamat |
+------+-----+------------------------------------ - +
(Alamat address = Efektif
seperti yang diberikan dalam instruksi)
Hal ini membutuhkan ruang dalam sebuah instruksi untuk cukup
alamat yang besar. Hal ini sering tersedia di mesin CISC yang
memiliki panjang instruksi variabel, seperti x86.Beberapa mesin RISC memiliki Literal
khusus Atas instruksi Load yang menempatkan sebuah 16-bit konstan
di atas setengah dari register. Sebuah literal
instruksi ATAU dapat digunakan untuk menyisipkan 16-bit konstan di
bagian bawah mendaftar itu, sehingga alamat 32-bit kemudian dapat digunakan
melalui mode pengalamatan tidak langsung mendaftar, yang itu sendiri disediakan
sebagai "base- plus-offset "dengan offset 0.
4.2. Indexed
mutlak
+------+-----+-----+------------------------------ - +
| Load | reg | index | alamat |
+------+-----+-----+------------------------------ - +
(Alamat alamat
= Efektif + isi register indeks tertentu)
Hal ini juga membutuhkan ruang dalam sebuah instruksi untuk
cukup alamat yang besar. Alamat bisa menjadi awal dari sebuah
array atau vektor, dan indeks bisa memilih elemen array tertentu yang
diperlukan.
prosesor mungkin skala indeks mendaftar untuk memungkinkan ukuran setiap elemen array .Catatan bahwa ini kurang lebih sama
dengan base-plus-offset mode pengalamatan, kecuali bahwa offset dalam hal ini
cukup besar untuk mengatasi setiap lokasi memori.
Contoh : Dalam
sebuah sub rutin, programmer dapat mendefinisikan string sebagai suatu
konstanta lokal atau variabel statis . Alamat string disimpan di alamat literal dalam instruksi.
Offset-yang karakter string untuk digunakan pada iterasi dari sebuah
loop-disimpan dalam register indeks.
4.3. Base plus
indeks
+------+-----+-----+-----+
| Load | reg | base | index |
+------+-----+-----+-----+
(Alamat Efektif = isi base register tertentu + isi register
indeks tertentu)
Register dasar dapat berisi alamat
awal array atau vektor, dan indeks bisa memilih elemen array tertentu yang
diperlukan.
prosesor mungkin skala register indeks untuk memungkinkan ukuran setiap elemen array . Ini dapat digunakan untuk mengakses
elemen array lulus sebagai parameter.
4.4. plus indeks
Base plus offset
+------+-----+-----+-----+----------------+
| Load | reg | base | index | offset |
+------+-----+-----+-----+----------------+
(Alamat Efektif = offset + isi basis tertentu register +
isi register indeks tertentu)
Register
dasar dapat berisi alamat awal array atau vektor dari catatan, indeks bisa
memilih data tertentu yang diperlukan, dan offset bisa memilih field dalam
catatan itu.
prosesor mungkin skala indeks mendaftar untuk memungkinkan ukuran setiap elemen array .
4.5. Scaled
+------+-----+-----+-----+
| Load | reg | base | index |
+------+-----+-----+-----+
(Alamat Efektif = isi base register + skala tertentu isi
register indeks tertentu)
Register dasar dapat berisi alamat
awal array atau vektor, dan indeks bisa mengandung jumlah elemen array tertentu
yang diperlukan.
4.6. Pendaftaran
tidak langsung
+------+-----+-----+
| Load | reg | base |
+------+-----+-----+
(Alamat Efektif = isi base register)
Sebuah komputer
sedikit yang ini sebagai mode pengalamatan yang berbeda. Banyak komputer hanya menggunakan dasar
ditambah offset dengan nilai offset 0 contoh (A7).
4.7. Autoincrement
Register tidak langsung
+------+-----+-------+
| Load | reg | base |
+------+-----+-------+
(Alamat Efektif = isi base
register)
Setelah menentukan alamat efektif, nilai pada register dasar
bertambah oleh ukuran dari item data yang akan diakses.
Sebagai contoh, (A7) + akan mengakses isi dari alamat register A7, kemudian
meningkatkan pointer alamat A7 oleh 1 (biasanya 1 kata). Dalam satu
lingkaran, ini mode pengalamatan dapat digunakan untuk langkah melalui semua
elemen dari sebuah array atau vektor.
4.8. Autodecrement
mendaftar langsung
+------+-----+-----+
| Load | reg | base |
+------+-----+-----+
(Alamat Efektif = konten baru
dari base register)
Sebelum
menentukan alamat yang efektif, nilai dalam base register adalah decremented
oleh ukuran dari item data yang akan diakses.
Dalam satu lingkaran, mode pengalamatan
ini dapat digunakan untuk langkah mundur melalui semua elemen dari sebuah array
atau vektor. Sebuah stack dapat diimplementasikan dengan menggunakan
mode ini bersama dengan mode pengalamatan sebelumnya (AUTOINCREMENT).
4.9. Memori tidak
langsung
Salah satu mode pengalamatan yang disebutkan dalam artikel ini
bisa memiliki sedikit tambahan untuk menunjukkan pengalamatan tidak langsung,
yaitu alamat dihitung menggunakan modus beberapa sebenarnya alamat dari suatu
lokasi (biasanya lengkap kata ) yang berisi alamat efektif sebenarnya.
Pengalamatan
tidak langsung dapat digunakan untuk kode atau data.
Hal ini dapat membuat pelaksanaan pointer atau referensi atau menangani lebih mudah, dan juga
dapat membuat lebih mudah untuk memanggil subrutin yang tidak dinyatakan
dialamati.
Pengalamatan tidak langsung tidak membawa hukuman performansi karena akses
memori tambahan terlibat.
4.10. PC-relatif
+------+------+---------+----------------+
| Load | reg1
| basis = PC | offset | reg1: [offset PC +] = RAM
+------+------+---------+----------------+
(Alamat Efektif = PC + offset)
Mode pengalamatan PC-relatif digunakan untuk memuat
mendaftar dari sebuah konstanta "" disimpan dalam memori program
jarak yang cukup dekat dari instruksi sekarang. Hal ini dapat dilihat sebagai kasus khusus
dari "dasar ditambah offset" mode pengalamatan, yang memilih program
counter (PC) sebagai "base register".
5. Mode Pengalamatan Usang
Berbagai mode pengalamatan usang yaitu digunakan dalam
kerangka waktu 1950-1980, namun tidak lagi tersedia pada komputer kebanyakan saat
ini. Oleh karena itu kami tidak membahasnya
secara detail tentang mode pengalamtan using ini.Daftar ini tidak lengkap,
telah banyak mode pengalamatan lain yang digunakan lebih menarik dari waktu ke
waktu, misalnya mutlak-plus-logis-OR dua register indeks.
BAB III
PENUTUP
Kesimpulan
Dari keterangan diatas
dapat disimpulkan bahwasanya mode pengalamatan pada suatu computer sangatlah di
perlukan sekali karena tanpa adanya mode pengalamtan maka sebuah computer tidak
akan bekerja bekerja secara maksimal disebabkan tidak adanya penunjuk atau
pointer yang mengarah kepada memori utama. Berbagai mode pengalamatan dibagi ke
dalam kode pengalamatan dan data pengalamata. Kebanyakan arsitektur komputer mempertahankan
perbedaan ini, tetapi ada, atau telah, beberapa arsitektur yang memungkinkan
(hampir) semua mode pengalamatan untuk digunakan dalam konteks apapun.Petunjuk
di bawah ini merupakan murni representatif untuk menggambarkan mode
pengalamatan, dan tidak selalu mencerminkan memonik yang digunakan oleh
komputer tertentu.
Adapun macam-macam dari
pada mode pengalamatan yang masih tetap digunakan pada saat sekarang ini
diantagranya adalah ;
1.
Mode
Pengalamatan Untuk Kode
2.
Mode
Pengalamatan Sekuential
3.
Mode
Pengalamatan Untuk Data
4.
Mode
Pengalamatan Lain Untuk Kode Atau Data
Selain
dari ke-empat mode pengalamatan yang telah di sebutkan di atas masih ada lagi
mode pengalamatan yang lain yaitu mode pengalamatan usang . mode pengalamatan
ini sudah tidak dipakai lagi pada saat sekarang ini karena sudah si anggap
jadul dan ketinggalan jaman .mode pengalamatan usang ini sudah di pakai pada
tahun 1950-1980, oleh karena
itu disini kami tidak membahas secara jelas dan detail mengenai mode
poengalamatan yang satu ini .
DAFTAR
PUSTAKA
1.
^
"How
many addressing modes are enough?" by F. Chow, S. Correll, M.
Himelstein, E. Killian, L. Weber, all from MIPS Computer Systems, Inc. 1987 "An
Overview of the MIPS-X-MP Project" by John L. Hennessy and Mark
A. Horowitz 1986: "MIPS-X uses a single addressing mode: base register
plus offset. This simple addressing mode allows the computation of the
effective address to begin very early"
2.
^ "Instruction
Set Principles: Addressing Mode Usage (Summary)" by Dr. Sofiène
Tahar "3 programs measured on machine with all address modes (VAX)":
"displacement mode" and "immediate mode" are used 75% of
the time. "Fundamentals
of Computer Design" p. 112-113 "Frequency of addressing
modes for TI TMS320C54x DSP. The C54x has 17 data addressing modes, not
counting register access, but the four found in MIPS account for 70% of the
modes. Autoincrement and autodecrement, found in some RISC architectures,
account for another 25% of the usage. This data was collected form a
measurement of static instructions for the C-callable library of 54 DSP
routines coded in assembly language." "Efficient and
Language-Independent Mobile Programs" by Ali-Reza
Adl-Tabatabai, Geoff Langdale, Steven Lucco, and Robert Wahbe 1995: "79%
of all instructions executed could be replaced by RISC instructions or
synthesized into RISC instructions using only basic block instruction
combination."



















0 komentar: