pada waktu semester genap aku mendapat materi arsitektur komputer, nah ini adalh tugas pada waktu itu yakni tentang "Mode pengalamatan dalam Bahasa Assembler",berikut tugas makalah saya :
BAB I
PENDAHULUAN
Addressing Mode merupakan aspek
dari
set instruksi arsitektur di sebagian
unit pengolah pusat (CPU) desain.
The various addressing modes that are defined
in a given instruction set architecture define how machine language instructions in that architecture identify
the operand (or operands) of each instruction. 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.
An addressing mode specifies how to calculate
the effective memory address of an operand by using information held in registers and/or constants contained within a
machine instruction or elsewhere. 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.
In computer programming , addressing modes
are primarily of interest to compiler writers and to those who write code directly in assembly language 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.
In particular, different authors and computer
manufacturers may give different names to the same addressing mode, or the same
names to different addressing 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.
Furthermore, an addressing mode which, in one
given architecture, is treated as a single addressing mode may represent
functionality that, in another architecture, is covered by two or more
addressing modes. 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.
For example, some complex instruction set computer
(CISC) computer architectures, such as the Digital Equipment Corporation (DEC) VAX , treat registers and literal/immediate constants as just
another addressing mode. 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.
Others,
such as the IBM System/390 and most reduced instruction set computer (RISC) designs, encode this
information within the instruction. Lainnya, seperti
IBM System/390 dan paling
mengatur mengurangi instruksi komputer (RISC) desain,
menyandikan informasi ini dalam instruksi.
Thus, the latter machines have three distinct instruction codes
for copying one register to another, copying a literal constant into a register,
and copying the contents of a memory location into a register, while the VAX
has only a single "MOV" instruction. 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 term "addressing mode" is itself subject to different
interpretations: either "memory address calculation mode" or
"operand accessing mode". The "mode pengalamatan"
istilah itu sendiri tunduk pada interpretasi yang berbeda: baik "alamat
memori perhitungan mode" atau "mode mengakses operan". Under the first interpretation instructions
that do not read from memory or write to memory (such as "add literal to
register") are considered not to have an "addressing mode".
Berdasarkan petunjuk interpretasi pertama yang tidak membaca dari memori atau
menulis ke memori (seperti "menambahkan literal untuk mendaftarkan")
dianggap tidak memiliki "mode pengalamatan". The second interpretation allows for machines such as VAX
which use operand mode bits to allow for a literal operand.
Penafsiran kedua
memungkinkan untuk mesin seperti VAX yang menggunakan modus operan bit untuk
memungkinkan suatu operan literal. Only
the first interpretation applies to instructions such as "load effective
address". Hanya interpretasi pertama berlaku untuk instruksi seperti
"alamat beban efektif".The
addressing modes listed below are divided into code addressing and data
addressiBerbagai mode pengalamatan tercantum di bawah ini dibagi ke
dalam kode pengalamatan dan data pengalamatan. Most computer architectures maintain this distinction, but there
are, or have been, some architectures which allow (almost) all addressing modes
to be used in any context. Kebanyakan arsitektur komputer mempertahankan
perbedaan ini, tetapi ada, atau telah, beberapa arsitektur yang memungkinkan
(hampir) semua mode pengalamatan untuk digunakan dalam konteks apapun.The instructions shown below are purely
representative in order to illustrate the addressing modes, and do not
necessarily reflect the mnemonics used by any particular computer.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
+----+------------------------------+
+----+------------------------------+
|jump|
address | | Lompat | alamat |
+----+------------------------------+
+----+------------------------------+
(Effective
PC address = address) (Efektif alamat PC = alamat)
The effective address for an absolute
instruction address is the address parameter itself with no m\Alamat
efektif untuk alamat instruksi mutlak adalah parameter alamat itu sendiri tanpa
modifikasi.
1.2.PC-relatif
+----+------------------------------+
+----+------------------------------+
|jump|
offset | jump relative | Lompat | offset | lompat relatif
+----+------------------------------+
+----+------------------------------+
(Effective
PC address = next instruction address + offset, offset may be negati(PC alamat Efektif = alamat instruksi
berikutnya + offset, offset mungkin
negatif)The effective address for a PC -relative
instruction address is the offset parameter added to the address of the next
instruction.
Alamat yang efektif untuk
PC instruksi alamat relatif-adalah parameter
offset ditambahkan ke alamat instruksi berikutnya.
This offset is usually signed to allow reference to code both
before and after the instruction. Offset ini biasanya masuk untuk
memungkinkan referensi kode baik sebelum dan sesudah instruksi.
This is particularly useful in connection
with jumps, because typical jumps are to nearby instructions (in a high-level
language most if or while statements are reasonably
short). 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).
Measurements of actual programs suggest that an 8 or 10 bit
offset is large enough for some 90% of conditional jumps. [ 3 ]
Pengukuran program sebenarnya menunjukkan bahwa 8 atau 10 bit offset cukup
besar untuk beberapa 90% dari kondisional.
Another advantage of
program-relative addressing is that the code may be position-independent , ie it can be loaded
anywhere in memory without the need to adjust any addressKeuntungan 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.
Some versions of this addressing mode may be
conditional referring to two registers ("jump if reg1=reg2"), one
register ("jump unless reg1=0") or no registers, implicitly referring
to some previously-set bit in the status register 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 .
See also conditional
execution below. Lihat juga
eksekusi
kondisional di bawah ini.
1.3. Pendaftaran tidak langsung
+-------+-----+
+-------+-----+
|jumpVia|
reg | | JumpVia | reg |
+-------+-----+
+-------+-----+
(Effective
PC address = contents of register 'reg') (Alamat PC Efektif = isi
register 'reg')
The
effective address for a Register indirect instruction is the address in the
specified register. Alamat yang efektif untuk sebuah instruksi Register
tidak langsung adalah alamat di register tertentu.
For example, (A7) to access the content of address register A7.
Sebagai contoh, (A7) untuk mengakses konten dari alamat register A7.
The effect is to transfer control to the
instruction whose address is in the specified regEfeknya adalah untuk
mentransfer kontrol ke instruksi yang alamatnya di register tertentu.
Many RISC machines have a subroutine call
instruction that places the return address in an address register—the
register indirect addressing mode is used to return from that subroutine calBanyak
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 | execute the following instruction | Nop | mengeksekusi instruksi
berikut
+------+
+------+
(Effective
PC address = next instruction address) (PC alamat Efektif = alamat
instruksi berikutnya)
The CPU, after executing a sequential instruction,
immediately executes the following instruction.CPU, setelah menjalankan
instruksi berurutan, segera mengeksekusi instruksi berikut.
Sequential execution is not considered to be
an addressing mode on some computerSequential eksekusi tidak dianggap
sebagai mode pengalamatan pada beberapa komputer.
Most instructions on most CPU architectures are sequential
instructionSebagian besar instruksi pada arsitektur CPU sebagian besar
instruksi berurutan.
Because most
instructions are sequential instructions, CPU designers often add features that
deliberately sacrifice performance on the other instructions—branch
instructions—in order to make these sequential instructions run faster.
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.
Conditional
branches load the PC with one of 2 possible results, depending on the
condition—most CPU architectures use some other addressing mode for the
"taken" branch, and sequential execution for the "not
taken" branccabang 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".
Many features in modern
CPUs -- instruction prefetch and more complex pipelineing , Out-of-order execution , etc. -- maintain
the illusion that each instruction finishes before the next one begins, giving
the same final results, even though that's not exactly what happens internally.
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.
Each " basic block " of such sequential
instructions exhibits both temporal and spatial locality of reference . 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.
In some CPUs, each instruction
always specifies the address of next instruction. Dalam beberapa CPU,
setiap instruksi selalu menentukan alamat instruksi berikutnya.
Such CPUs have a instruction pointer that
holds that specified address, but they do not have a complete program counter.
CPU seperti ini memiliki penunjuk instruksi yang menyatakan bahwa alamat yang
ditentukan, tetapi mereka tidak memiliki program counter yang lengkap.
Such CPUs include some drum memory computers, the SECD machine , and the RTX 32P . [ 4 ]
CPU tersebut mencakup beberapa
drum memori komputer,
SECD mesin , dan
Rtx 32P.
Other
computing architectures go much further, attempting to bypass the von Neumann bottleneck using a variety of alternatives to the program counter Arsitektur
komputasi lain pergi lebih jauh, mencoba untuk melewati
kemacetan von Neumann menggunakan berbagai
alternatif program counter .
2.2. eksekusi
kondisional
Some computer architectures (such as ARM ) have conditional instructions (or conditiona loads, such as x86) which can in some cases
obviate the need for conditional branches and avoid flushing the instruction pipeline . 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 .
An instruction such as a 'compare' is used to set a condition code , and subsequent instructions
include a test on that condition code to see whether they are obeyed or
ignored. 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| skip the following instruction if reg1=reg2 | SkipEQ | reg1
| reg2 | melewatkan instruksi berikut jika reg1 = reg2
+------+-----+-----+
+------+-----+-----+
(Effective
PC address = next instruction address + 1) (PC alamat Efektif =
instruksi alamat berikutnya + 1)
Skip addressing may be considered a special kind of PC-relative
addressing mode with a fixed "+1" offset.Skip menangani dapat
dianggap sebagai jenis khusus mode pengalamatan PC-relatif dengan tetap
"+1" offset.
Like PC-relative
addressing, some CPUs have versions of this addressing mode that only refer to
one register ("skip if reg1=0") or no registers, implicitly referring
to some previously-set bit in the status register . 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 .
Other CPUs have a version that selects a specific bit in a
specific byte to test ("skip if bit 7 of reg12 is 0"). CPU
lain memiliki versi yang memilih sedikit tertentu dalam byte tertentu untuk
menguji ("skip jika sedikit 7 dari reg12 adalah 0").
Unlike all other conditional branches, a
"skip" instruction never needs to flush the instruction pipeline , though it may need to
cause the next instruction to be ignorTidak 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; | Mul | reg1 | reg2 | reg3
| reg1: = reg2 * reg3;
+------+-----+-----+-----+
+------+-----+-----+-----+
This "addressing mode" does not have an effective
address and is not considered to be an addressing mode on some computers.
Ini "mode pengalamatan" tidak memiliki alamat yang efektif dan tidak
dianggap sebagai mode pengalamatan pada beberapa komputer. In this example, all the operands are in
registers, and the result is placed in a registeDalam contoh ini, semua
operand berada dalam register, dan hasilnya ditempatkan di register.
3.2. Base plus
offset, dan variasi
This is sometimes referred to as 'base plus
displacement' Hal ini kadang-kadang disebut 'dasar ditambah perpindahan
sebagai
+------+-----+-----+----------------+
+------+-----+-----+----------------+
|
load | reg | base| offset | reg := RAM[base + offset] | Load | reg |
base | offset | reg: = RAM [base + offset]
+------+-----+-----+----------------+
+------+-----+-----+----------------+
(Effective
address = offset + contents of specified base register) (Alamat Efektif
= offset + isi dari base register yang ditentukan)
The
offset is usually a signed 16-bit value
(though the 80386 expanded it to 32 bits). The
offset biasanya nilai 16-bit masuk
(walaupun
80386 diperluas ke 32 bit).
If the offset is zero, this becomes an example of register
indirect addressing; the effective address is just the value in the base
register.Jika offset adalah nol, ini menjadi contoh dari
register
pengalamatan tidak
langsung, alamat efektif hanya nilai dalam register
dasar.
On many RISC machines, register 0
is fixed at the value zeroPada mesin RISC banyak, register 0 adalah
tetap sebesar nilai nol.
If register 0 is
used as the base register, this becomes an example of absolute addressing
. Jika register 0 digunakan sebagai register dasar, ini menjadi sebuah
contoh dari
pengalamatan mutlak. However, only a small portion of memory can be accessed (64 kilobytes , if the offset is 16 bits). Namun, hanya sebagian
kecil dari memori dapat diakses (64
kilobyte , jika offset adalah 16 bit).
The 16-bit offset may seem very small in relation to the
size of current computer memories (which is why the 80386 expanded it to 32-bit)16-bit offset mungkin
tampak sangat kecil sehubungan dengan ukuran memori komputer saat ini (yang
mengapa
80386 diperluas ke 32-bit).
It could be worse: IBM System/360 mainframes only have an
unsigned 12-bit offset. Ini bisa lebih buruk: IBM System/360 mainframe
hanya memiliki 12-bit unsigned offset.
However,
the principle of locality of reference applies: over a short
time span, most of the data items a program wants to access are fairly close to
each other. Namun, prinsip
locality of reference berlaku: selama rentang
waktu yang singkat, sebagian besar item data program ingin mengakses cukup
dekat satu sama lain.
This addressing
mode is closely related to the indexed absolute addressing mode. Mode
pengalamatan ini terkait erat dengan mode pengalamatan terindeks mutlak.
Example 1 : Within a
subroutine a programmer will mainly be interested in the parameters and the
local variables, which will rarely exceed 64 KB , for which one base register (the frame pointer ) suffices. 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.
If this routine is a class method in an
object-oriented language, then a second base register is needed which points at
the attributes for the current object ( this or self in some high
level languages). 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| constant | reg1 := reg2 + constant; | Add | reg1 |
reg2 | konstanta | reg1: = reg2 + konstan;
+------+-----+-----+----------------+
+------+-----+-----+----------------+
This "addressing mode" does not have an effective
address, and is not considered to be an addressing mode on some computers.Ini
"mode pengalamatan" tidak memiliki alamat yang efektif, dan tidak
dianggap sebagai mode pengalamatan pada beberapa komputer.
The constant might be signed or unsignedKonstanta
mungkin ditandatangani atau unsigned.
For
example move.l #$FEEDABBA, D0 to move the immediate hex value of
"FEEDABBA" into register D0. Sebagai contoh move.l # $
FEEDABBA, D0 untuk memindahkan nilai hex langsung dari "FEEDABBA" ke
D0 mendaftar.
Instead of using an
operand from memory, the value of the operand is held within the instruction
itselfAlih-alih menggunakan operand dari memori, nilai operan diadakan
dalam instruksi itu sendiri.
On the DEC
VAX machine, the literal operand sizes could be 6, 8, 16, or 32 bits long.
Pada mesin VAX Desember, ukuran operan harfiah bisa 6, 8, 16, atau 32 bit
panjang.
Andrew Tanenbaum showed that 98% of all the
constants in a program would fit in 13 bits (see RISC design philosophy ).Andrew Tanenbaum menunjukkan bahwa 98% dari
semua konstanta dalam sebuah program akan masuk dalam 13.
3.4. Implisit
+-----------------+
+-----------------+
|
clear carry bit | | Bit jelas membawa |
+-----------------+
+-----------------+
The implied addressing mode [2]
, also called the implicit addressing mode X86 assembly language , does not explicitly
specify an effective address for either the source or the destination (or
sometimes both).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).
Either the
source (if any) or destination effective address (or sometimes both) is implied
by the opcodeEntah sumber (jika ada) atau alamat tujuan yang efektif
(atau kadang-kadang keduanya) tersirat oleh opcode.
Implied addressing was quite common on older computers (up to
mid-1970s)Tersirat menangani cukup umum pada komputer lama (sampai
dengan pertengahan 1970-an).
Such
computers typically had only a single register in which arithmetic could be
performed—the accumulator. komputer tersebut biasanya hanya memiliki
register tunggal di mana aritmatika dapat dilakukan-akumulator.
Such accumulator machines implicitly reference that
accumulator in almost every instruction. Seperti
mesin akumulator implisit referensi yang
akumulator di hampir setiap instruksi.
For
example, the operation <a := b + c;> can be done using the sequence
<load b; add c; store a;> -- the destination (the accumulator) is implied
in every "load" and "add" instruction; the source (the
accumulator) is implied in every "store" instruction. 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".
Later computers generally had more than one general purpose register or RAM location
which could be the source or destination or both for arithmetic—and so later
computers need some other addressing mode to specify the source and destination
of arithmeticKemudian 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.
On many computers,
instructions that flip the user/system mode bit, the interrupt-enable bit, etc.
implicitly specify the special register that holds those bits. 4.Mode
Pengalamatan Lain Untuk Kode Atau Data
+------+-----+--------------------------------------+
+------+-----+------------------------------------ - +
|
load | reg | address | | Load | reg | alamat |
+------+-----+--------------------------------------+
+------+-----+------------------------------------ - +
(Effective
address = address as given in instruction) (Alamat address = Efektif
seperti yang diberikan dalam instruksi)
This requires space in an instruction for quite a large
address.Hal ini membutuhkan ruang dalam sebuah instruksi untuk cukup
alamat yang besar.
It is often
available on CISC machines which have variable-length instructions, such as x86 . Hal ini sering tersedia di mesin CISC yang
memiliki panjang instruksi variabel, seperti
x86.
Some RISC machines
have a special Load Upper Literal instruction which places a 16-bit
constant in the top half of a registerBeberapa mesin RISC memiliki
Literal
khusus
Atas instruksi
Load yang menempatkan sebuah 16-bit konstan
di atas setengah dari register.
An OR
literal instruction can be used to insert a 16-bit constant in the lower
half of that register, so that a full 32-bit address can then be used via the
register-indirect addressing mode, which itself is provided as
"base-plus-offset" with an offset of 0. 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| address | | Load | reg | index | alamat |
+------+-----+-----+--------------------------------+
+------+-----+-----+------------------------------ - +
(Effective
address = address + contents of specified index register) (Alamat alamat
= Efektif + isi register indeks tertentu)
This also requires space in an instruction for quite a large
address.Hal ini juga membutuhkan ruang dalam sebuah instruksi untuk
cukup alamat yang besar.
The address
could be the start of an array or vector, and the index could select the
particular array element required. Alamat bisa menjadi awal dari sebuah
array atau vektor, dan indeks bisa memilih elemen array tertentu yang
diperlukan.
The processor may scale the
index register to allow for the size of each array element .
prosesor mungkin skala indeks mendaftar untuk memungkinkan
ukuran setiap elemen array .
Note that this is more or less the same as
base-plus-offset addressing mode, except that the offset in this case is large
enough to address any memory locationCatatan bahwa ini kurang lebih sama
dengan base-plus-offset mode pengalamatan, kecuali bahwa offset dalam hal ini
cukup besar untuk mengatasi setiap lokasi memori.
Example 1 : Within a
subroutine, a programmer may define a string as a local constant or a static variable . Contoh : Dalam
sebuah sub rutin, programmer dapat mendefinisikan string sebagai suatu
konstanta lokal atau
variabel statis .
The address of the string is stored in the literal address in the
instruction. Alamat string disimpan di alamat literal dalam instruksi.
The offset—which character of the string to
use on this iteration of a loop—is stored in the index register.
Offset-yang karakter string untuk digunakan pada iterasi dari sebuah
loop-disimpan dalam register indeks.
4.3. Base plus
indeks
+------+-----+-----+-----+
+------+-----+-----+-----+
|
load | reg | base|index| | Load | reg | base | index |
+------+-----+-----+-----+
+------+-----+-----+-----+
(Effective
address = contents of specified base register + contents of specified index
register) (Alamat Efektif = isi base register tertentu + isi register
indeks tertentu)
The
base register could contain the start address of an array or vector, and the
index could select the particular array element required. Register dasar dapat berisi alamat
awal array atau vektor, dan indeks bisa memilih elemen array tertentu yang
diperlukan.
The processor may scale the
index register to allow for the size of each array element .
prosesor mungkin skala
register indeks untuk memungkinkan
ukuran setiap elemen array .
This could be used for accessing elements of
an array passed as a parameter. Ini dapat digunakan untuk mengakses
elemen array lulus sebagai parameter.
4.4. plus indeks
Base plus offset
+------+-----+-----+-----+----------------+
+------+-----+-----+-----+----------------+
|
load | reg | base|index| offset | | Load | reg | base | index | offset |
+------+-----+-----+-----+----------------+
+------+-----+-----+-----+----------------+
(Effective
address = offset + contents of specified base register + contents of specified
index register) (Alamat Efektif = offset + isi basis tertentu register +
isi register indeks tertentu)
The
base register could contain the start address of an array or vector of records,
the index could select the particular record required, and the offset could
select a field within that record. 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.
The processor may scale
the index register to allow for the size of each array element .
prosesor mungkin skala indeks mendaftar untuk memungkinkan
ukuran setiap elemen array .
4.5. Scaled
+------+-----+-----+-----+
+------+-----+-----+-----+
|
load | reg | base|index| | Load | reg | base | index |
+------+-----+-----+-----+
+------+-----+-----+-----+
(Effective
address = contents of specified base register + scaled contents of specified
index register) (Alamat Efektif = isi base register + skala tertentu isi
register indeks tertentu)
The
base register could contain the start address of an array or vector, and the
index could contain the number of the particular array element required. 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| | Load | reg | base |
+------+-----+-----+
+------+-----+-----+
(Effective
address = contents of base register) (Alamat Efektif = isi base register)
A
few computers have this as a distinct addressing mode.Sebuah komputer
sedikit yang ini sebagai mode pengalamatan yang berbeda. Many computers just use base plus offset
with an offset value of 0. Banyak komputer hanya menggunakan dasar
ditambah offset dengan nilai offset 0 For example, (Acontoh (A7).
4.7. Autoincrement
Register tidak langsung
+------+-----+-------+
+------+-----+-------+
|
load | reg | base | | Load | reg | base |
+------+-----+-------+
+------+-----+-------+
(Effective
address = contents of base register) (Alamat Efektif = isi base
register)
After determining the effective address, the value in the
base register is incremented by the size of the data item that is to be
accessed.Setelah menentukan alamat efektif, nilai pada register dasar
bertambah oleh ukuran dari item data yang akan diakses. For example, (A7)+ would access the content of the address
register A7, then increase the address pointer of A7 by 1 (usually 1 word).
Sebagai contoh, (A7) + akan mengakses isi dari alamat register A7, kemudian
meningkatkan pointer alamat A7 oleh 1 (biasanya 1 kata). Within a loop, this addressing mode can be
used to step through all the elements of an array or vector. 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| | Load | reg | base |
+------+-----+-----+
+------+-----+-----+
(Effective
address = new contents of base register) (Alamat Efektif = konten baru
dari base register)
Before
determining the effective address, the value in the base register is
decremented by the size of the data item which is to be accessed.Sebelum
menentukan alamat yang efektif, nilai dalam base register adalah decremented
oleh ukuran dari item data yang akan diakses.
Within
a loop, this addressing mode can be used to step backwards through all the
elements of an array or vector.Dalam satu lingkaran, mode pengalamatan
ini dapat digunakan untuk langkah mundur melalui semua elemen dari sebuah array
atau vektor. A stack can be implemented
by using this mode in conjunction with the previous addressing mode
(autoincrement). Sebuah stack dapat diimplementasikan dengan menggunakan
mode ini bersama dengan mode pengalamatan sebelumnya (AUTOINCREMENT).
4.9. Memori tidak
langsung
Any of the addressing modes mentioned in this article could
have an extra bit to indicate indirect addressing, ie the address calculated
using some mode is in fact the address of a location (typically a complete word ) which contains the actual effective
address.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.
Indirect addressing may be used for code or data.Pengalamatan
tidak langsung dapat digunakan untuk kode atau data.
It can make implementation of pointers or references
or handles much easier , and can
also make it easier to call subroutines which are not otherwise addressable.
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.
Indirect addressing does
carry a performance penalty due to the extra memory access involved.
Pengalamatan tidak langsung tidak membawa hukuman performansi karena akses
memori tambahan terlibat.
4.10. PC-relatif
+------+------+---------+----------------+
+------+------+---------+----------------+
|
load | reg1 | base=PC | offset | reg1 := RAM[PC + offset] | Load | reg1
| basis = PC | offset | reg1: [offset PC +] = RAM
+------+------+---------+----------------+
+------+------+---------+----------------+
(Effective
address = PC + offset) (Alamat Efektif = PC + offset)
The
PC-relative addressing mode is used to load a register from a
"constant" stored in program memory a short distance away from the
current instruction.Mode pengalamatan PC-relatif digunakan untuk memuat
mendaftar dari sebuah konstanta "" disimpan dalam memori program
jarak yang cukup dekat dari instruksi sekarang. It can be seen as a special case of the "base plus
offset" addressing mode, one that selects the program counter (PC) as the
"base register". 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
The
addressing modes listed here were used in the 1950–1980 time frame, but are no
longer available on most current computers. Berbagai mode pengalamatan usang yaitu digunakan dalam
kerangka waktu 1950-1980, namun tidak lagi tersedia pada komputer kebanyakan saat
ini.
This list is by no means complete;
there have been many other interesting and peculiar addressing modes used from
time to time, eg absolute-plus-logical-OR of two or three index registers. [
citation
needed ] 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. Most computer architectures maintain this distinction, but there
are, or have been, some architectures which allow (almost) all addressing modes
to be used in any conKebanyakan arsitektur komputer mempertahankan
perbedaan ini, tetapi ada, atau telah, beberapa arsitektur yang memungkinkan
(hampir) semua mode pengalamatan untuk digunakan dalam konteks apapun.The instructions shown below are purely
representative in order to illustrate the addressing modes, and do not
necessarily reflect the mnemonics used by any particular computer.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."
3.
^
Kong and Patterson. "Instruction set design".
1995. 1995. slide 27.
[1]