Pertemuan 4 set instruksi arm, motorola, dan intel
1. SET INSTRUKSI ARM, MOTOROLA
DAN INTEL
JUMIATI 092904035
PRODI PENDIDIKAN INFORMATIKA DAN KOMPUTER
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MAKASSAR
2011
2. PENDAHULUAN
Advanced RISC Machines (ARM) limited telah
mendesain suatu famili mikroprosesor dan
melisensikan desain tersebut ke perusahaan lain
untuk fabrikasi chip yang penggunaannya dalam
produk komputer dan sistem uang embedded.
Perusahan ARM yang relatif baru, merupakan
perkembangan dari perusahan Acorn Computer
yang mengembangkan desain prosesor pada awal
tahun 1980-an. Penggunaan utama
mikroprosesor ARM adalah pada aplikasi
embedded yang berdaya rendah dan berbiaya
rendah, seperti misalnya mobile
telephone, modem komunikasi, sistem
manejemen mesin mobil, dan hand-held.
3. 1. REGISTER, AKSES MEMORI, DAN TRANSFER DATA
Dalam arsitektur ARM, memori adalah byte-
addressble, menggunakan alamat 32-bit, dan
register prosesor memiliki panjang 32-bit. Dua
panjang operand digunakan dalam memindahkan
data antara memori dan register prosessor : byte (8
bit) dan word (32 bit). Alamat word harus di-
align, yaitu harus merupakan kelipatan 4. Arsitektur
ARM. Mendukung pengalamatan memori little-
endian pilihannya ditetapkan oleh jalur kontrol
input eksternal ke prosesor. Ada saat suatu byte di-
load dari memori ke register prosesor atau
disimpan dari register ke memori, selalu
dialokasikan pada posisi byte register low-order.
4. A. Struktur Register
Register prosesor yang digunakan oleh program aplikasi
ditampilkan pada gambar 3.1 terdapat enam belas register
32 bit berlabel R0 hingga R15 yang terdiri dari lima belas
general-purpose register (R0 hingga R14) dan register
program counter (PC), R15, yang terdiri dari 15. General
purpose register dapat menyimpan alamat memori atau
operand data. Current progarm status register (CPRS), atau
cukup disebut register status, menyimpan condition code
flag (N, Z, C, V), interupt disable flag, dan bit mode prosesor.
Disini kita akan mengasumsikan bahw prosesor dalam mode
user dan dieksekusi sebagai program aplikasi.terdapat 15
general purpose register tambahn yang yang disebut register
banked. Register tersebut menduplikasikan beberapa dari
register R0 sampai R 14.register tersebut digunakan pada
saat prosesor switch ke mode operasi supervisor atau
interupt. Copy dari register status yang tersimpan juga
tersedia dalam mode nonuser tersebut.
5.
6. B. Instruksi Akses Memory Dan Mode Pengalamatan
Eksekusi Conditional Instruksi yaitu Fitur yang
membedakan dan agak tidak biasa dari prosesor ARM
adalah semua instruksinya dieksekusi secara
conditional, tergantung pada kondisi yang ditetapkan
pada instruksi tersebut.
Mode Pengalamatan Memori yaitu Metode dasar untuk
mengalamati operand memori adalah membangkitkan
effective address, EA, dari operan tersebut dengan
menambahkan offset bertanda keisi base register Rn.
7. 2. INSTRUKSI ARITMATIKA DAN LOGIKA
Set instruksi ARM memiliki sejumlah instruksi untuk
operand aritmatika dan logika pada operand yang
berada dalam general-purpose register atau
dinyatakan sebagai operand immediate dalam instruksi
itu sendiri. Operand memori tidak diperbolehkan
untuk instruksi ini. Terdapat instruksi untuk bentuk
penambahan dan pengurangan yang berbeda, dan
terdapat dua instruksi untuk perkalian. Terdapat
instruksi untuk operand logika AND,OR,NOT,XOR, dan
bit-clear. Instruksi seperti compare disediakan untuk
men-set condition code flag berdasarkan hasil dari
operasi aritmatika dan logika pada dua operand.
Instruksi tersebut tidak menyimpan hasil akurat dalam
register.
8. A. INSTRUKSI ARITMATIKA
Ekspresi bahasa assembly dasar untuk instruksi aritmatika adalah
Opcode Rd, Rn, Rm
Dimana operasi yang ditetapkan oleh OP code dilakukan menggunakan
operand dalam general-purpose register Rn dan Rm. Hasilnya
diletakkan dalam register Rd. Misalnya, instruksi
ADD R0, R2, R4
Menjalankan operasi
R0 [R2] + [R4]
Dan instruksi
SUB R0, R6, R5
Menjalankan operasi
R0 [R6] – [R5]
Selain dimasukkan dalam register Rm, operand kedua dapat dinyatakan
dalam mode immediate. Sehingga,
ADD R0, R3, #17
Menjalankan operasi
R0 [R3] + 17
Nilai immediate berada dalam field 8-bit dalam bit b7-0 dari instruksi
tersebut.
9. NEXT
Operand kedua dapat digeser atau dirotasi sebelum digunakan dalam operasi
tersebut. Pada saat diperlukan pergeseran atau rotasi, maka ditetapkan paling
akhir dalam ekspresi bahasa assembly untuk instruksi tersebut. Instruksi
ADD R0, R1, R5, LSL#4
Beroperasi sebagai berikut: operand kedua yang berada dalam register R5, di geser
ke kiri 4 posisi bit (setara dengan [R5]) X 16), dan kemudian ditambahkan ke isi
register R1; jumlah tersebut diletakkan dalam register R0.
Tersedia dua versi instruksi multiply. Versi pertama mengalikan isi dua register dan
menempatkan 32-bit low-order produk tersebut dalam register ketiga. Bit high-
order produk tersebut, jika ada, dibuang. Misalnya, instruksi
MUL R0, R1, R2
Menjalankan operasi
R0 [R1] x [R2]
Versi kedua menempatkan register keempat yang isinya ditambahkan ke produk
sebelum menyimpan hasil tersebut dalam register destinasi. Karenanya, instruksi
MLA R0 , R1, R2, R3
Menjalankan operasi
R0 [R1] x [R2] + [R3]
10. G. OPERASI PERGESERAN OPERAND
Kita memperhatikan sebelumnya bahwa salah
satu fitur yang berbeda dari set instruksi ARM
adalah semua instruksi dieksekusi secara
CONDITIONAL. Fitur lain yang membedakan
adalah operasi pergeseran dan rotasi yang
digabungkan ke sebagian operasi instruksi. Pada
sebagian besar set instruksi komputer yang
lain, operasi pergeseran dilakukan menggunakan
instruksi terpisah.
11. B. INSTRUKSI LOGIKA
Operasi logika AND, OR, XOR, dan Bit-clear diimplementasikan oleh instruksi OP
code AND, ORR, EOR, dan BIC. Kode tersebut memiliki format yang sama
dengan instruksi aritmatika. Instruksi
AND Rd, Rn, Rm
Menjalankan operasi
Rd [Rn] ^ [Rm]
Yang merupakan bitwise logical AND antara operand dalam register Rn dan Rm.
Misalnya, jika register R0 berisi pola hexadesimal 02FA62CA dan R1 berisi pola
0000FFFF, maka instruksi
AND R0, RO, R1
Akan menyebabkan pola 000062CA diletakkan dalam register R0.
Instruksi bit-clear (BIC) dihubungkan erat dengan instruksi AND. Instruksi ini
mengkomplemen tiap bit dalam operand Rm sebelum meng-AND-kannya
dengan bit dalam register Rn. Menggunakan pola bit R0 dan R1 yang sama
dengan contoh diatas, instruksi
BIC R0, R0, R1
Menghasilkan pola 02FA0000 diletakkan dalam R0.
Instruksi move negative, dengan OP-code mnemonic MVN, mengkomplemen bit
source operand dan meletakkan hasilnya dalam Rd. Jika isi R3 adalah pola
hexadesimal 0F0F0F0F, maka instruksi
MVN R0, R3
Menempatkan hasil F0F0F0F0 dalam register R0.
12.
13. 3. INSTRUKSI BRANCH
Instruksi branch CONDITIONAL berisi offset 24-
bit, 2’-complement, bertanda yang ditambahkan
ke isi ter-update Program Counter untuk
menghasilkan alamat target branch. Format untuk
istruksi branch ditampilkan pada Gambar
3.6a, dan suatu contoh diberikan pada Gambar
3.6b. Instruksi BEQ (Branch if Equal to 0)
menyebabkan suatu branch kjika flag Z di set ke 1.
14. A. SETTING CONDITION CODE
beberapa instruksi, seperti compare, dinyatakan sebagai
berikut
CMP Rn, Rm
Yang menjalankan operasi
[Rn] – [Rm]
Memiliki tujuan utama untuk men-set condition code flag
berdasar pada hasil operasi pengurangan.
Sebaliknya, instruksi aritmatika dan logika
mempengaruhi condition code flag hanya jika ditetapkan
untuk melakukannya oleh suatu bit dalam field OP-code.
Hal ini diindikasikan dengan menambahkan akhiran S ke
mnemonic OP-code bahasa assembly. Misalnya, instruksi
ADDS R0, R1, R2
Men-set condition code flag, tetapi
ADD R0, R1, R2
Tidak.
15. B. PROGRAM LOOP UNTUK PENAMBAHAN BILANGAN
Operasi load dan store dilakukan oleh
instruksi pertama, kedua, dan terakhir yang
digunakan oleh mode pengalamatan
relative. Ini mengasumsikan bahwa lokasi
memori N, pointer, dan SUM terdapat
dalam rentang yang terjangkau oleh offset
relatif terhadap PC. Lokasi memori pointer
berisi alamat NUM 1 dari bilangan pertama
yang akan ditambahkan, N berisi jumlah
entri didalam list dan SUM digunakan untuk
menyimpan jumlah tersebut.
16. 4. BAHASA ASSEMBLY
Bahasa assembly ARM memiliki assembler directive
untuk menyiapkan ruang
penyimpanan, menetapkan nilai numerik ke label
alamat dari simbol konstanta, menentukan dimana
program dan blok data akan ditempatkan dalam
memori, menetapkan akhir teks source program
fasilitas tersebut didekskripsikan secara umum.
Kita mengilustrasikan ARM directife yang
memaparkan source program lengkapuntuk
program pada gambar. Area directive yang
menggunakan argumen kode atau data
, mengindikasikan awal blok memori yang berisi
program instruksi atau data.
17. A. PSEUDO-INSTRUKTION
Cara alternative untuk me-load alamat NUM1 ke register R2,juga disediakan dalam bahasa assembly.
Pseudo instruktion
ADD Rd, ADDRESS
Me-load nilai 32- bit address ke Rd. Instruksi ini bukannya instruksi mesin sebenarnya assembler
memilih instruksi mesin riil yang sesuia untuk mengimplementasikan psseudo-instruktion.
Misalnya, kombinasi instruksi mesin
LDR R2, POINTER
Dan directive declarasi data
POINTER DCD NUM1
Yang digunakan dalam gambar adalah salah satu cara untuk mengimplementasikan pseudo-
instruction
ADR R2, NUM1
Cara yang lebih effesien untuk mengimplementasikan instruksi ADR dimungkinkan dalam contoh dan
ini salah satu yang akan dipilih oleh assembler, pada saat nilai alamat di-load oleh instruksi ADR
dalam 25 byte isi PC terbaru (R 15), instruksi
ADD Rd, R15, #offset
Dapat digunakan untuk mengimplementasikan Adr pseudo-instruction. Jika hal ini dikerja dalam
contoh program, maka tidak diperlukan lokasi POINTER. Assembler mengimplementasikan ADR
pseudo-instruction dengan instruction mesin riil
ADR R2, R15, #28
Karena NUM1 adalah28 byte diatas Pcter-update pada saat instruksi ADD dieksekusi.instruksi ini
mengasumsikan bahwa area data segera dilanjutkan dalam instruksi STR. Hal ini tidak sepenuhnya
benar karena instruksi untuk mengembalikan kontrol ke sistem operasi harus berada setelah
instruksi STR, tetapi instruksi telah dihilangkan.
18. 5. OPERASI INPUT/ OUTPUT
Arsitektur ARM menggunakan memori mapped I/O sebagaimana yang
didekskripsikan. Membaca karakter dari keyboard atau mengirim suatu
karakter dilakukan menggunakan program –controlled I/O sebagaimana
didekskripsikan pda bagian tersebut misalnya bit 3 pada tiap register
status prangkat INSTATUS (keyboard ) dan OUTSTATUS (display)
masing-masing berisi flag control sin dan sout. Juga asumsikan bahwa
register keyboard dataIN dan display dataOUT berada pada alamat
instatus +4 dan outstatus +4 tepat pada register status. Asumsika
bahwa alamat instatus telah diload keregister R1.
Rangkaian instruksi
READWAIT LDR R3, [R1]
TST R3, #8
BEQ READWAIT
LDRB R3, [R1, #4]
Dengan mengasumsikan outstatus alamat telah diload keregister
R2, maka rangkaian instruksi
WRITEWAIT LDR R4,,[R2]
TST R4, #8
BEQ WRITEWAIT
STRB R3, [R4, #4]
19. 6. SUBROUTINE
Instruksi branch and Link (BL) digunakan untuk
memanggil subroutine. Instruksi tersebut
beroperasi dengan cara yang samadengan instruksi
branch lainnya dengan satu langkah tambahan.
Return address yang merupakan alamat instruksi
beriktnya sehingga instruksi BL di-load keregister
R4 yang bertindak sebagai link register.karena
subroutine dapat di-nest, maka isi link register
harus disimpan dalam stack oleh subroutine.
Register R13 biasanya digunakan sebagai pointer
untuk stack ini.
20.
21. 7. CONTOH PROGRAM
A. PROGRAM VECTOR DOT PRODUCT
Dua instruksi pertama me-load alamat vector A dan B ke
register R1 dan R2. Register tersebut adalah ADR pseudo-
instruction yang dideksripsikan pada bagian 3.4 kjika
AVEC dan BVEC mendekati program maka instruction Add
yang menggunakan nilai terbaru PC dapat digunakan
untuk membangkitkan alamat. Mode pengalamatan
Relative digunakan untuk meng akses isi N dan
DOTPROD,dan mode pengalamatan post-index with
writeback digunakan dalam dua dua instruksi pertama
dari loop. Instruksi Multiply-Accumulate (MLA)
melakukan operasi aritmatika yang diperlukan. Instruksi
ini mengalikan element vektor dalam R4 dan R5 dan
mengakumulasikan produknya ke R0.
22. B. PROGRAM BYTE-SORTING
alamat LIST byte pertama di-load ke register R4 digunakan
dalam instruksi compare kedua hingga terakhir untuk
menetapkan kapan inner loop (berbasis pada index k) berakhir.
R5 berisi alamat LISH +1 dan digunakan pada instruksi compare
terkhir untuk menetapkan kapan outer loop (berbasis pada
index j) berakhir. Base register R2 digunakan untuk melewati
index j secara mundur dari akhir list dalam outer loop. Register
R3 melewati index k secara mundur melalui tiap sublist dalam
innerloop. Mode pengalamatan pre-indexed with writeback
digunakan untuk me-load byte LISH (j) ke register R0 dan untuk
me-load byte list (k) ke R1 masing-masing dalam outer loop dan
inner loop.
Fitur eksekusi CONDITIONAL dari set instruksi ARM digunakan
untuk memanfaatkan inner loop pada saat LIST (k) harus
dipertukarkan dengan LIST (j). Rangkaian tiga instruksi
STR, STR, MOV hanya dieksekusi jika list k lebih besar dari pada
list j, sebagaimana diindikasikan oleh akhiran GT.
24. 8. SUBROUTINE PENYISIPAN DAN PENGHAPUSAN LINKED-
LISH
Prosesor 68000 dicirikan oleh 16-bit word lenght eksternal
karena chip prosesornya memiliki 16 pin data untuk koneksi
ke memori. Akan tetapi, data yang dimanipulasi didalam
prosessor pada pada register yang berisi 32bit.
25. A. Struktur Register
Struktur register 68000 yang ditunjukan pada
gambar memiliki 8 register data dan 8 alamat
register masing-masing memiliki panjang 32 bit.
Register data berfungsi sebagai general purpose
accumulator dan sebagai counter. Register alamat
menyimpan informasi yang digunakan dalam
menentukan alamat operand memori, informasi ini
mungkin dinyatakan dalam ukuran long word atau
word pada satu alamat suatu memori berada pada
register alamat, register tersebut berfungsi sebagai
pointer ke lokasi tersebut.
26. B. Pengalamatan
Memori komputer 68000 disusun dalam 16 bit
word dan merupakan byte addresseble. Dua
word berurutan dapat diinterpresentasikan
sebagai 32 bit long word tunggal alamat memori
ditetapkan sebagaimana ditunjukkan suatu
word harus di-align pada batas yang genap yaitu
alamatnya harus berupa bilangan
genap.digunakan penetapan alamat bigendian.
Byte yang berada dalam posisi high order pada
suatu word memiliki alamat yang sama dengan
word tersebut, sedangkan byte yang berada
pada posisi low order memiliki alamat yang
lebih tinggi selanjutnya.
27. Mode pengalamatan yang ada didefenisikan sebagai
berikut :
Mode immadiate Operandnya dimuat dalam instruksi. Empat ukuran
operand dapat ditetapkan
Mode absolute Alamat absolut suatu operand ditetapkan dalam
instruksi, setelah OP-code
Mode register Operandnya berada dalam register prosesor yang
ditetapkan dalam instruksi
Mode register indirect Effective address operanya berada dalam
registeralamat yang ditetapkan dalam instruksi
Mode autoincrement Effective address operandnya berada dalam
register alamat, an, yang ditetapkan dalam instruksi tersebut
Mode auto decrement Isi suatu register alamat ditentukan oleh instruksi
Mode basic index Offset bertanda 16-bit dan register alamat ditentukan
oleh instruksi
Mode full index Offset bertanda 8 bit, register alamat register dan data
ditetapkan oleh instruksi
Mode basic relative Merupakan mode yang sama dengan mode basic
index kecuali program counter digunakan sebagai pengganti index
register An.
Mode full relative Merupakan mode yang sama dengan mode full index
kecuili program counter digunakan sebagai pengganti index register An.