SET INSTRUKSI ARM, MOTOROLA, DAN INTEL

Download Report

Transcript SET INSTRUKSI ARM, MOTOROLA, DAN INTEL

Pertemuan 5
(SET INSTRUKSI ARM, MOTOROLA, DAN INTEL)
1
3.10 Instruksi
Para desainer berusaha untuk membuat bahasa
assembly ortogonal. Artinya, instruksi dibagi menjadi
operasi dan mode alamat , dan hampir semua mode
alamat yang tersedia untuk hampir semua instruksi.
Banyak programmer tidak menyukai "dekat" ortogonal,
sementara yang lain berterima kasih atas upaya tersebut.
Pada tingkat bit, orang menulis assembler jelas akan
melihat bahwa "petunjuk" bisa menjadi salah satu dari
beberapa-op kode yang berbeda. Benar-benar suatu
kompromi yang bagus karena memberikan kenyamanan
hampir sama dengan mesin benar-benar ortogonal,
namun juga memberikan kebebasan CPU desainer untuk
mengisi tabel op-code. Selain itu, banyak instruksi dan
mode pengalamatan menambahkan kata-kata tambahan
di belakang untuk alamat, lebih alamat-mode bit, dll
Group 4 PTIK 09
3.11 Bahasa Assembly
2
Pembahasan bahasa assembly kali ini diterapkan
secara umum pada bahasa assembly 68000. Karena
instruksi 68000 dapat menangani tiga ukuran operand
yang berbeda, maka instruksi assembler harus
mengindikasikan ukuran yang dimaksud. Hal ini
dilakukan dengan menambahkan indikator ukuran ke
mnemonic operasi. Indikator ukuran adalah L untuk
long word, W untuk word, B untuk byte. Sehingga, jika
instruksi add beroperasi pada operand long word, maka
mnemonic operasinya ditulis sebagai ADD.L pada saat
tidak ada indikasi ukuran, ukuran operand dianggap
satu word. Hal ini berarti bahwa instruksi ADD.L. pada
saat tidak ada indikasi ukuran, ukuran operand
dianggap satu word. Hal ini berarti bahwa instruksi
ADD.W#20, D1 dan ADD#20, D1 adalah identik.
Group 4 PTIK 09
3.12 Kontrol Aliran Program
3
Instruksi
Branch
diperlukan
untuk
mengmplementasikan struktur program seperti
statement if dan loop. Secara umum, suatu
instruksi branch menguji kondisi branch dan
kemudian,
tergantung
pada
hasil
tersebut,
menyebabkan eksekusi dilanjutkan pada salah satu
dari jalur yang ada.
Group 4 PTIK 09
3.13 Operasi I/O
4
Processor 68000 mensyaratkan semua
status dan buffer data dalam antar muka
perangkat I/Omenjadi addressable seperti lokasi
memori.
Group 4 PTIK 09
3.14 Stack dan Subroutine
5
Suatu stack dapat diimplementasikan menggunakan register
alamat
apapun
sebagai
pointer.
Mode
pengalamatan
autoincrement dan autodecrement memfasilitasi proses ini. Satu
register spesifik, register A7, ditunjuk sebagai pointer stack
prosesor, dan stack yang ditunjuk register ini disebut stack
prosessor. Ini adalah stack yang digunakan dalam semua
operasi stack yang dilakukan processor secara otomatis,
sebagaimana dalam kasus linkage subroutine.
Instruksi Branch-to-Subroutine (BSR) digunakan untuk
memanggil subroutine. Instruksi tersebut diimplementasikan
dengan cara yang sama seperti instruksi branch yang lain, tetapi
juga menyebabkan isi program counter di-push ke stack. Branch
targetnya adalah instruksi pertama dalam subroutine tersebut.
Pada saat subroutine tersebut diselesaikan, Instruksi Returnfrom-Subroutine (RTS) digunakan untuk kembali ke calling
program.
Group 4 PTIK 09
3.15 Instruksi Logika
6
Kelompok
perintah
ini
dipakai
untuk
melakukan operasi logika mikrokontroler MCS51,
operasi logika yang bisa dilakukan adalah operasi
AND (kode operasi ANL), operasi OR (kode operasi
ORL) dan operasi Exclusive-OR (kode operasi XRL).
Data yang dipakai dalam operasi ini bisa berupa
data yang berada dalam Akumulator atau data
yang berada dalam memori-data, hal ini sedikit
berlainan dengan operasi aritmatik yang harus
melihatkan Akumulator secara aktip. Hasil operasi
ditampung di sumber data yang pertama.
Group 4 PTIK 09
3.16 Contoh Program
7
Pada bagian ini, kita menggunakan versi
program 68000 untuk operasi dot product, byte
sorting, dan linked-list
Group 4 PTIK 09
BAGIAN III CONTOH IA-32 PENTIUM
8
Intel cooperation menggunakan nama umum
Intel Architecture (IA) untuk prosesor dalam merek
produknya. Kita akan mendeskripsikan prosesor IA
yang beroperasi dengan alamat memori 32-bit dan
operand-32 bit. Prosesor IA-32 pertama kali adalah
80386 (tahun 1985), 80486 (tahun 1989), Pentium
(tahun 1993), dan Pentium 4 (tahun 2000) telah
diimplementasikan.
Group 4 PTIK 09
3.17 Register dan Pengalamatan
9
Dalam arsitektur IA-32 memori adalah byte
addressable menggunakan alamat 32-bit, dan
instruksi beroperasi pada operand data 8-32 bit.
Ukuran operand ini diebut byte dan doubleword
dalam istilah intel. Operand 16-bit disebut word
pada processor Intel i6-bit awal. Digunaka
pengalamatan little-edian, operand multiple-byte
dapat mulai dari tiap lokasi alamat byte.
Group 4 PTIK 09
3.17.1 Struktur Register IA-32
10
Delapan register 32-bit berlabel R0 hingga R7
adalah general-pupose register yang dapat
digunakan untuk menyimpan operand data atau
informasi pengalamatan. Delapan general-pupose
register menjadi tiga tipe yang berbeda: register
data untuk operand penyimpan, dan register
pointer dan index untuk menyimpan alamat dan
index alamat digunakan untuk metapkan affective
address suatu operand memori.
Group 4 PTIK 09
3.17.2 Mode Pengalamatan IA-32
11
Arsitektur IA-32 memi bliki set mode
pengalamatan yang besar dan fleksibel. Mode
tersebut didesain untuk mengakses item data
individu atau item data yang merupakan anggota
dari list yang berurutan mulai pada alamat memori
terentu. Set lengkap mode pengalamatan IA-32
didefeniskan sebagai berikut:
Group 4 PTIK 09
12
-
Mode Immediate - operandnya disertakan
dalaminstruksi.
Operand
tersebut
adalah
bilangan 8-bit atau 32-bit bertanda, dengan
panjang ditetapkan oleh suatu bit dalam OP
code instruksi.
- Mode Direct - alamat memori operand
dinyatakandengan nilai 32-bit dalam instruksi
terebut.
Group 4 PTIK 09
13
- Mode Register - operand disertakan dalam salah
satu dari delapan general-purpose register yang
ditetapkan dalam instruksi.
- Mode Register Indirect - alamat memori operand
disertakan dalam salah satu dari delapan generalpurpose register yang ditetapkan dalam instruksi.
Group 4 PTIK 09
14
- Mode Base with displacement - displacement 8bit atau 32-bit bertanda dan salah satu dari
delapan
general-purpose
register
untuk
digunakan sebagai base register ditetapkan
dalam instruksi.
- Mode Index with diplecement - diplecement
bertanda 32-bit, salah satu dari delapan generalpurpose register untuk digunakan sebagai index
register, dan faktor skala 1, 2, 4, atau 8
ditetapkan dalam instruksi.
Group 4 PTIK 09
15
- Mode Base with index - dua dari delapan generapurpose register dan faktor skala 1, 2, 4, atau 8
ditetapkan dalam instruksi.
- Mode Base with index and diplecement diplecement 8-bit atau 32-bit bertanda, dua dari
delapan register general-purpose dan faktor skala
1, 2, 4, atau8 ditetapkan dalam instruksi.
Group 4 PTIK 09
3.18 Instruksi IA-32
16
Set instruksi IA-32 adalah eksensif. Instruksi
tersebut di-encode dalam format instruksi variabllength yang tidak memilik layout regular
sepenuhnya. Kebanyakaninstruksi IA-32 memilki
satu atau dua operand. Dalam satu atau dua
operand, hanya satu operand yang berada dalam
memori. Operand lain harus berada dalam
registerprosesor.
Selain
instruksi
untu
memindahkan data antara memori dan register
prosesor, dan melakukan operasi aritmatika, set
instruksi menyertakan sejumlah operasi logika da
pergesera/rotasi yang berbeda pada data.

Group 4 PTIK 09
3.19 Bahasa Assembly
17
Aspek dasar bahasa assembly IA-32
untuk menetapkan OP code, mode pengalamatan,
dan label alamat instruksi yang diilustrasikan oleh
program. Assembler directive diperluka untuk
mendefinisikan area data suatu program dan
untuk mendefinisikan hubungan antara nama
simbolik lokasi data dan nilai alamat fisik aktual.
Group 4 PTIK 09
3.20 Kontrol Aliran Program
18
Terdapat
dua
cara
utama
untuk
menvariasi aliran eksekusi instruksi dari straightline sequencing. Panggilan ke subroutine dan
kembali dari subroutine tersebut memutuskan
straight-line sequencing, juga gangguan instruksi
branch, baik conditional maupun unconditional,
dapat menyebabkan suatu break.
Group 4 PTIK 09
3.21 Instruksi Logic dan Shift/Rotate
19
3.21.1 Operasi Logika
Arsitektur
IA-32memiliki
instruksi
yang
menjalankan operasi logika AND, OR, dan XOR. Operasi
tersebut dijalankan bitwise pada dua operand, dan
hasilnya ditempatkan pada lokasi destinasi.
3.21.2 Operasi Pergeseran dan Rotasi
Suatu operand dapat digeser ke kiri atau ke kanan
dengan sejumlah posisi bit ditetapkan dengan count
tertentu. Terdapat empat instruksi shift yaitu: SHL, SHR,
SAL, SAR.
Group 4 PTIK 09
3.22 Operasi I/O
20
3.22.1 Memory-Mapped I/O
Regiser
buffer
perangkat
input/output
merupakan yang paling umum diakses dalam
computer modern oleh metode memory-mapped
I/O. instruksi Move IA-32 dapat digunakan untuk
mentransfer directive ke perangkat I/O, dan untuk
mentransfer informasi status dan data ke dan dari
perangkat.
Group 4 PTIK 09
3.22.2 I/O Terisolasi
21
Set instruksi IA-32 juga memiliki dua
instruksi, dengan OP code IN dan OUT, yang
hanya digunakan untuk tujuan I/O. alamat yang
dinyatakan dalam instruksi tersebut berada dalam
ruang alamat yang terpisah dari ruang alamat
memori
yang
digunakan
oleh
instruksi
lain.pengaturan ini diebut isolated I/O utuk
membedakanya dari memori-mapped I/O dimana
lokasi addressable dalam perangkat I/O berada
dalam ruang alamat yang sama dengan lokasi
memori.
Group 4 PTIK 09
3.22.3 Transfer Blok
22
Arsitektur IA-32 juga memiliki dua blok
instruksi transfer I/O ; REPINSD dan REPOUTS.
Instruksi tersebut mentransfer suatu blok item
data secara serial,satu item pada satu waktu,
antara memori dan perangkat I/O.
Group 4 PTIK 09
3.23 Subroutine
23
Pada suatu program, seringkali perlu untuk melakukan
subtask tertentu berulangkali pada nilai data yang berbeda.
Subtask semacam itu biasanya disebut subroutine. Misalnya, suatu
subroutine dapat mengevaluasi fungsi sinus atau mensortir suatu
list nilai menjadi urutan meningkat atau menurun. Sangat
dimungkinkan untuk menyertakan blok instruksi yang terdiri dari
subroutine pada setiap tempat yang memerlukan program tersebut.
Akan tetapi untuk menghemat ruang, hanya satu copy dari instruksi
yang merupakan subroutine ditempatkan dalam memori, tiap
program yang perlu menggunakan subroutine tersebut hanya perlu
branch ke lokasi mulainya. Pada saat sualu program branch ke
suatu subroutine kita katakan program tersebut memanggil
subroutine. Instruksi yang melakukan operasi branch ini disebut
instruksi Call. Setelah subroutine dieksekusi, calling program hams
mcresume eksekusi, melanjutkan dengan segera setelah instruksi
yang memanggil subroutine tersebut. Subroutine kembali ke
program yang memanggilnya dengan mengeksekusi instruksi
Return.
Group 4 PTIK 09