presentasi arsitektur & organisasi komputer

Download Report

Transcript presentasi arsitektur & organisasi komputer

Pokok Bahasan:
• Instruction Sets
• Addressing Modes & Format
Disusun oleh:
Sutriono
Azhari rahmadi lubis
Eka cahya
UNIVERSITAS INDRAPRASTA PGRI JAKARTA
 Apakah instruksi set itu?
 Elemen-elemen instruksi
 Macam-macam instruksi
 Berapa banyak address digunakan?
 Macam-macam operand
 Macam-macam operasi
 Kumpulan dari instruksi-instruksi yang berbeda
yang dapat dijalankan oleh CPU disebut set
Instruksi (Instruction Set).
 Operasi dari CPU ditentukan oleh instruksi-
instruksi yang dilaksanakan atau dijalankannya.
Instruksi ini sering disebut sebagai instruksi
mesin (mechine instructions) atau instruksi
komputer (computer instructions).
 Operation Code (opcode) : menentukan operasi yang
akan dilaksanakan
 Source Operand Reference : merupakan input bagi
operasi yang akan dilaksanakan
 Result Operand Reference : merupakan hasil dari
operasi yang dilaksanakan
 Next instruction Reference : memberitahu CPU untuk
mengambil (fetch) instruksi berikutnya setelah
instruksi yang dijalankan selesai.
Macam-macam instruksi ada 2,yaitu:
1. O – Address Instruction
2. 1 – Addreess Instruction.
3. N – Address Instruction
4. M + N – Address Instruction
1. Memori To Register Instruction
2. Memori To Memori Instruction
3. Register To Register Instruction
1.
2.
3.
4.
Data processing: Arithmetic dan Logic Instructions
Data storage: Memory instructions
Data Movement: I/O instructions
Control: Test and branch instructions
A. Data processing arithmatic
 Tindakan CPU untuk melakukan operasi arithmetic :
1. Transfer data sebelum atau sesudah.
2. Melakukan fungsi dalam ALU.
3. Menset kode-kode kondisi dan flag.
 Operasi set instruksi untuk arithmetic :
1. ADD : penjumlahan
5. ABSOLUTE
2. SUBTRACT : pengurangan
6. NEGATIVE
3. MULTIPLY : perkalian
7. DECREMENT
4. DIVIDE : pembagian
8. INCREMENT
Nomor 5 sampai 8 merupakan instruksi operand tunggal.
B. Data processing logic instruction
 Tindakan CPU sama dengan arithmetic
 Operasi set instruksi untuk operasi logical :
1. AND, OR, NOT, EXOR
2. COMPARE : melakukan perbandingan logika.
3. TEST : menguji kondisi tertentu.
4. SHIFT : operand menggeser ke kiri atau kanan menyebabkan
konstanta pada ujung bit.
5. ROTATE : operand menggeser ke kiri atau ke kanan dengan
ujung yang terjalin.
 Tindakan CPU sama dengan arithmetic dan logical.
 Instruksi yang mengubah format instruksi yang beroperasi terhadap
format data.
 Misalnya pengubahan bilangan desimal menjadi bilangan biner.
 Operasi set instruksi untuk conversi :
1. TRANSLATE : menterjemahkan nilai-nilai dalam suatu bagian
memori berdasarkan tabel korespodensi.
2. CONVERT : mengkonversi isi suatu word dari suatu bentuk
ke bentuk lainnya.
 Tindakan CPU untuk melakukan INPUT /OUTPUT :
1. Apabila memory mapped I/O maka menentukan alamat
memory mapped.
2. Mengawali perintah ke modul I/O
 Operasi set instruksi Input / Ouput :
1. INPUT : memindahkan data dari perangkat I/O tertentu ke
tujuan
2. OUTPUT : memindahkan data dari sumber tertentu ke
perangkat I/O
3. START I/O : memindahkan instruksi ke prosesor I/O untuk
mengawali operasi I/O
4. TEST I/O : memindahkan informasi dari sistem I/O ke tujuan
Desain set instruksi merupakan masalah yang
sangat komplek yang melibatkan banyak aspek,
diantaranya adalah:
1. Kelengkapan set instruksi
2. Ortogonalitas (sifat independensi
instruksi)
3. Kompatibilitas :
- Source code compatibility
- Object code Compatibility
Selain ketiga aspek tersebut juga melibatkan
hal-hal sebagai berikut:
1. Operation Repertoire: Berapa banyak dan operasi apa saja
yang disediakan, dan berapa sulit operasinya
2. Data Types: tipe/jenis data yang dapat olah
Instruction Format: panjangnya, banyaknya alamat, dsb.
3. Register: Banyaknya register yang dapat digunakan
4.Addressing: Mode pengalamatan untuk operand
 Suatu instruksi terdiri dari beberapa field yang sesuai
dengan elemen dalam instruksi tersebut. Layout dari suatu
instruksi sering disebut sebagai Format Instruksi
(Instruction Format).
 Salah satu cara tradisional untuk menggambarkan arsitektur prosessor
adalah dengan melihat jumlah alamat yang terkandung dalam setiap
instruksinya.
 Jumlah alamat maksimum yang mungkin diperlukan dalam
sebuah instruksi :
1. Empat Alamat ( dua operand, satu hasil, satu untuk alamat
instruksi berikutnya)
2. Tiga Alamat (dua operand, satu hasil)
3. Dua Alamat (satu operand merangkap hasil, satunya lagi
operand)
4. Satu Alamat (menggunakan accumulator untuk menyimpan
operand dan hasilnya)




Addresses (akan dibahas pada addressing
modes)
Numbers : - Integer or fixed point
- Floating point
- Decimal (BCD)
Characters : - ASCII
- EBCDIC
Logical Data : Bila data berbentuk binary: 0 & 1
 Menetapkan lokasi operand sumber dan operand tujuan.
 Lokasi-lokasi tersebut dapat berupa memori, register atau bagian
paling atas daripada stack.
 Menetapkan panjang data yang dipindahkan.
 Menetapkan mode pengalamatan.
 Tindakan CPU untuk melakukan transfer data adalah :
a. Memindahkan data dari satu lokasi ke lokasi lain.
b. Apabila memori dilibatkan :
Menetapkan alamat memori.
Menjalankan transformasi alamat memori virtual ke alamat
memori aktual.
Mengawali pembacaan / penulisan memori
Operasi set instruksi untuk transfer data :
 MOVE : memindahkan word atau blok dari sumber ke tujuan
 STORE : memindahkan word dari prosesor ke memori.
 LOAD : memindahkan word dari memori ke prosesor.
 EXCHANGE : menukar isi sumber ke tujuan.
 CLEAR / RESET : memindahkan word 0 ke tujuan.
 SET : memindahkan word 1 ke tujuan.
 PUSH : memindahkan word dari sumber ke bagian paling atas stack.
 POP : memindahkan word dari bagian paling atas sumber
Source dan result operands dapat berupa salah
Satu diantara tiga jenis berikut ini:
 Main or Virtual Memory
 CPU Register
 I/O Device
 Model-model addressing
 Direct and Indirect Addressing
 Register Addressing
 Instruction Format
Jenis-jenis addressing modes (Teknik
Pengalama-tan) yang paling umum:
 Immediate
 Direct
 Indirect
 Register
 Register Indirect
 Displacement
 Stack
 Operan adalah bagian dari instruksi
Operan = alamat lapangan
misalnya Masukkan 5
Tambahkan 5 untuk isi akumulator
5 adalah operan
Tidak ada referensi memori untuk mengambil data
cepat
keterbatasan
Instruction
Opcode
Operand
 Address field berisi alamat dari operan
Alamat Efektif (EA) = alamat lapangan (A)
misalnya ADD A
Tambahkan isi sel A ke akumulator
Lihat dalam memori pada alamat A untuk operand
Referensi memori tunggal untuk mengakses data
Tidak ada tambahan perhitungan untuk bekerja di
luar alamat efektif
Terbatas ruang alamat
Instruction
Opcode
Address A
Memory
Operand
 Sel memori yang ditunjuk oleh field alamat berisi
alamat (pointer ke) operan
EA = (A)
Lihat dalam A, menemukan alamat (A) dan tampak di
sana untuk operan
misalnya ADD (A)
Tambahkan isi sel ditunjukkan oleh isi dari A ke
akumulator
 Besar ruang alamat
2n dimana n = kata panjang
Bisa diulang, bertingkat, mengalir
misalnya EA = (((A)))
Gambarlah diagram diri
Memori rangkap mengakses untuk menemukan
operan
Oleh karena itu lebih lambat
Instruction
Opcode
Address A
Memory
Pointer to operand
Operand
 Operan diadakan di daftar alamat yang disebutkan
dalam mengajukan
EA = R
Terbatas jumlah register
Sangat kecil alamat lapangan diperlukan
Shorter instruksi
Instruksi lebih cepat mengambil
 Tidak ada akses memori
Sangat cepat eksekusi
Sangat terbatas ruang alamat
Beberapa register membantu kinerja
Membutuhkan pemrograman perakitan baik atau
menulis compiler
N.B. pemrograman C
mendaftar int a;
c.f. langsung mengatasi
Instruction
Opcode
Register Address R
Registers
Operand
 C.f. tidak langsung menangani
EA = (R)
Operan dalam sel memori yang ditunjuk oleh isi dari
register R
Alamat yang besar ruang (2n)
Satu lebih sedikit memori akses langsung dari
pengalamatan
Instruction
Opcode
Register Address R
Memory
Registers
Pointer to Operand
Operand
 EA = A + (R)
Address field memegang dua nilai
Sebuah nilai dasar =
R = register yang memegang perpindahan
atau sebaliknya
Instruction
Opcode Register R
Address A
Memory
Registers
Pointer to Operand
+
Operand
 Sebuah versi dari perpindahan menangani
R = Program counter, PC
EA = A + (PC)
yaitu mendapatkan operan dari A sel dari lokasi saat
ini ditunjuk oleh PC
c.f lokalitas penggunaan referensi & Cache
 Sebuah memegang perpindahan
R memegang pointer ke alamat dasar
R dapat menjadi eksplisit atau implisit
misalnya segmen register di 80x86
A = dasar
R = perpindahan
EA = A + R
Baik untuk mengakses array
EA = A + R
R++
 Postindex
 EA = (A) + (R)
 Preindex
 EA = (A+(R))
 (Draw the diagrams)
Operan adalah (secara implisit) di atas tumpukan
misalnya
Masukkan Pop atas dua item dari stack dan tambahkan
 Alamat virtual atau efektif adalah offset ke dalam segmen
Alamat awal ditambah diimbangi memberikan alamat linier
Ini berjalan melalui terjemahan halaman jika paging diaktifkan
12 mode pengalamatan yang tersedia
segera
Daftar operan
pemindahan
dasar
Base dengan perpindahan
Scaled indeks dengan perpindahan
Dasar dengan indeks dan perpindahan
Basis skala indeks dengan perpindahan
relatif
 Hanya petunjuk yang referensi memori
Secara tidak langsung melalui register dasar ditambah diimbangi
mengimbangi
Offset ditambahkan ke atau dikurangkan dari isi register dasar untuk
membentuk alamat memori
Preindex
Alamat memori dibentuk sebagai untuk mengatasi mengimbangi
Alamat memori juga ditulis kembali ke base register
Jadi base register nilai bertambah atau decremented oleh nilai offset
Postindex
Alamat memori adalah nilai base register
Offset Hasil ditambahkan atau dikurangi ditulis kembali ke base register
Base register bertindak sebagai daftar indeks untuk preindex dan postindex
menangani
Offset baik nilai langsung dalam instruksi atau mendaftar lain
Jika mendaftar skala mendaftar mengatasi tersedia
Offset mendaftar nilai ditingkatkan oleh operator pergeseran
Instruksi menentukan ukuran pergeseran
 Pengolahan Data
Daftar menangani
Nilai dalam operan mendaftar dapat ditingkatkan
menggunakan operator pergeseran
Atau campuran dari register dan segera menangani
cabang
segera
Instruksi berisi 24 nilai bit
Bergeser meninggalkan 2 bit
Pada batas kata
Jarak efektif + /-32MB dari PC.
 Load / store bagian dari tujuan umum register
16-bit bidang instruksi menetapkan daftar register
Sequential kisaran alamat memori
Selisih setelah, kenaikan sebelumnya, setelah
pengurangan, dan pengurangan sebelum
Base register menentukan alamat memori utama
Incrementing atau decrementing dimulai sebelum
atau setelah akses memori pertama
Siklus : fetch – decode – execute
 decoder : didesain permanen  format instruksi sudah tentu
Op Code
Address field
Address field
...
Opcode :
 bilangan biner tak bertanda
 operasi yang harus dilakukan oleh komputer.
 himpunan opcode : instruction set atau machine language
 i bit / op code  maksimum 2i operasi
 Address fields :
 operan atau alamat operan
 jumlah operan tiap instruksi  pengelompokan instruction set
 Modifiers  jumlah & interpretasi spesifik thd mesin

Terdapat empat field alamat dalam satu instruksi
:
 Operan kiri dalam operasi binary
 Operan kanan dalam operasi binary
 Hasil operasi
 Instruksi berikutnya yang akan dieksekusi
Contoh
A := B + C – D
artinya
1. T  B + C ; go to 2
2. A  T – D ; go to next addr
Op Code
Left Operand
Right Operand
21
A DD
A ddress of B
A ddress of C
SUB
A ddress of T
A ddress of D
Result
A ddress of
temporary location T
Next Inst
101
...
A ddress
101
A ddress of A
next addr
 tidak pernah digunakan
 ukuran instruksinya terlalu besar.
 2i jenis op code, 2n lokasi memori  panjang tiap
instruksi : i + 4n.
Contoh :
i = 8 (256 op code) dan n = 24 (16 juta lokasi memori)
 ukuran tiap instruksi = 104 bit (13 byte)  terlalu
panjang
Menghilangkan field alamat terakhir (next instruction) :
 Operan kiri dalam operasi binary
 Operan kanan dalam operasi binary
 Hasil operasi
Setelah eksekusi instruksi pada alamat L : (konsensus)
 Instruksi berikut : [L + 1], kecuali dispesifikasikan lain
secara eksplisit.
 1 instruksi = k sel memori  instruksi berikut : [L + k]
Contoh :
A := B + C – D
Op Code
Left Operand
Right Operand
100
A DD
A ddress of B
A ddress of C
101
SUB
A ddress of T
A ddress of D
Result
A ddress of
temporary location T
A ddress of A
 instruksi diletakkan secara berurutan.
Dampak pada desain komputer :
 (Secara umum) program akan disimpan secara berurut
dalam suatu blok lokasi memori.
 Register khusus dalam CU untuk memantau alamat
instruksi yang akan dieksekusi berikutnya  PC (Program
Counter).
 Instruksi untuk membelokkan alur eksekusi default
(sekuensial); definisi secara eksplisit  branching
instructions.
Perpendek ukuran instruksi  hilangkan field result :
 Operan kiri dalam operasi binary
 Operan kanan dalam operasi binary
Perjanjian : hasil operasi disimpan ke dalam suatu tempat tertentu.
 Hasil operasi disimpan ke salah satu alamat yang sama dengan
operan kiri atau operan kanan.
 Asumsi : field alamat pertama  operan kiri & lokasi hasil :
ADD
Address of B
Address of C
≡ B := B + C
Jangan sampai operan yang masih dibutuhkan
oleh operasi lain tertimpa oleh suatu hasil operasi!
 gunakan lokasi memori temporary
Contoh : A := (B + C) / (B - D)
Op Code
Left Operand Right Operand
100
MOVE
Address of T1 Address of B
T1
B
101
ADD
Address of T1 Address of C
T1
T1 + C
102
MOVE
Address of T2 Address of B
T2
B
103
SUB
Address of T2 Address of D
T2
T2 + D
104
DIV
Address of T1 Address of T2
T1
T1 / T2
105
MOVE
Address of A Address of T1
A
T1
 lebih dari satu kemungkinan urutan instruksi
Instruction*
Meaning
MOVE d,s
CON(d)  CON(s)
MOVEI d,v
CON(d)  v
ADD d,s
CON(d)  CON(d) + CON(s)
INC s
CON(s)  CON(s) + 1
SUB d,s
CON(d)  CON(d) - CON(s)
DEC s
CON(s)  CON(s) – 1
MUL d,s
CON(d)  CON(d) * CON(s)
DIV d,s
CON(d)  CON(d) / CON(s)
COMP s,d
Compare CON(s) to CON(d)
Set EQ, GT, LT flags based on the value of the compare. Do not change the content of
either s or d
BEQ address
Branch to address if EQ flag is ON
BLT address
Branch to address if LT flag is ON
BGT address
Branch to address if GT flag is ON
BR address
Branch to address
INP address
Input a single sharacter and store it in the indicated memory address
OUT address
Output the content of the indicated memory address in a proper character-oriented
format
Buatlah Program dalam Format Instruksi TwoAddress untuk menghitung Faktor Persekutuan
Terbesar (FPB) dari 2 bilangan bulat.
Input(A)
Input(B)
Repeat
R  A
If R ≠
A 
B 
mod B
0 then
B
R
Until (R=0)
Output (B)
MOVEI C, 0
; CON(C)  0
MOVEI A, 15
; CON(A)  15
MOVEI B, 12
; CON(A)  12
LOOP1 SUB A, B ; CON(A)  CON(A) – CON(B)
COMP A, B
; COMPARE CON(A) VS CON(B)
BGT LOOP1
; LOMPAT KE LOOP1 IF BG = 1
COMP A, C
; COMPARE CON(A) VS CON(C)
BEQ
END
; LOMPAT KE END IF EQ = 1
MOVE D, B
; CON(D)  CON(B)
MOVE B, A
; CON(B)  CON(A)
MOVE A, D
; CON(A)  CON(D)
BR
LOOP1
; LOMPAT KE LOOP1
END
OUT
B
; TAMPILKAN CON(B)
 Untuk operasi monadic, dapat digunakan
secara mandiri.
 Untuk operasi dyadic  perjanjian : tempat
operan kedua. Biasanya operan kedua dan hasil
operasi ditempatkan pada suatu general
purpose register tertentu.
Contoh :
ADD  operan kedua dan hasil berada
pada register R0 :
ADD
Address of A
≡ CON(R0)  CON(A) + CON(R0)
A := B + C – D
100
LOA D
A ddress of B
R0
B
101
A DD
A ddress of C
R0
R0 + C
102
SUB
A ddress of D
R0
R0 - D
103
STORE
A ddress of A
A
R0
Instruction*
Meaning
LOAD a
CON(R)  CON(a)
LOADI v
CON(R)  v
STORE a
CON(a)  CON(R)
ADD a
CON(R)  CON(a) + CON(R)
INC a
CON(a)  CON(a) + 1
SUB a
CON(R)  CON(a) - CON(R)
DEC a
CON(s)  CON(s) – 1
MUL s
CON(R)  CON(s) * CON(R)
DIV a
CON(R)  CON(a) / CON(R)
BEQ address
Branch to address if CON(R) = 0
BPOS address
Branch to address if CON(R) > 0
BNEG address
Branch to address if CON(R) < 0
BR address
Branch to address
INP address
Input a single sharacter and store it in the indicated memory address
OUT address
Output the content of the indicated memory address in a proper character-oriented
format
 Operan diasumsikan telah berada di suatu tempat 
tidak perlu dispesifikasikan di dalam instruksi
 Hasil operasi akan diletakkan ditempat tertentu
 Lokasi spesifik  sekumpulan lokasi memori khusus
yang disebut stack.
 stack pointer (atau TOP) : menunjuk elemen teratas
dari stack. (Dalam beberapa kasus TOP menunjuk pada
lokasi kosong pertama diatas elemen teratas).
Operasi :
 PUSH : menambahkan
C
B
A
Stack
TOP
elemen pada stack diatas
elemen teratas
 POP : mengambil elemen
teratas dari stack.
ADD  ambil dua elemen teratas dari stack,
jumlahkan dan kembalikan hasil penjumlahan
ke stack.
A := (B + C) – D
100
PUSH
A ddres s of D
101
PUSH
A ddres s of C
102
PUSH
A ddres s of B
103
A DD
104
SUB
105
POP
A ddres s of A
Instruction*
Meaning
PUSH a
Top of stack  CON(a)
PUSHI v
Top of stack  v
POP a
CON(a)  Top of stack
ADD
Top of stack  CON(Top) + CON(Top-1)
The original operands are removed
SUB
Top of stack  CON(Top) - CON(Top-1)
The original operands are removed
MULT
Top of stack  CON(Top) * CON(Top-1)
The original operands are removed
DIVIDE
Top of stack  CON(Top) / CON(Top-1)
The original operands are removed
TEST
Check the top of the stack. Set the EQ, GT and LT indicators if the top item is zero, or greater then
zero, or less than zero, respectively. Do not change the value on top of the stack
COMPARE
Compare the top two on the stack. Set the EQ, GT and LT indicators if the top item is equal to, greater
then, or less than the second item on the stack, respectively. Remove the two operands from the
stack
BEQ address
Branch to address if the EQ indicator is ON
BGT address
Branch to address if the GT indicator is ON
BLT address
Branch to address if the LT indicator is ON
BR address
Branch to address
INPUT address
Input a single character from the terminal and store it in the indicated memory address
OUTPUT
Output the value contained on top of stack in the correct character-oriented format. Then pop the
value off the stack
 Stack sangat membantu dalam mengevaluasi ekspresi aritmetik.
 Meningkatkan kecepatan evaluasi :
infix  prefix (Polish) atau postfix (Reverse Polish).
Keuntungan Reverse Polish dibanding Infix:
 Formula aljabar dapat diekspresikan tanpa kurung.
 Kemudahan komputasi yang melibatkan stack.
 tTdak mensyaratkan pengetahuan tentang prioritas operator (infix
: a + b x c  a + (b x c)
 E. W. Dijkstra. : formula  variabel, operator dyadic (+, -, x, /, ‘(’
dan ‘)’),  (simbol awal dan akhir formula)
A
C a lifo rn ia
x
(
B
+
C
)
N e w Yo rk
Texas
 Tanda  yang pertama selalu berbelok terlebih dahulu ke Texas.
Gerbong di
persimpangan
Gerbong
di Jalur
Texas
terdekat
dg
persimp
angan

+
-
x
/
(
)

4
1
1
1
1
1
5
+
2
2
2
1
1
1
2
-
2
2
2
1
1
1
2
x
2
2
2
2
2
1
2
/
2
2
2
2
2
1
2
(
5
1
1
1
1
1
3
Tabel keputusan :
1. Gerbong di persimpangan belok ke
Texas
2. Gerbong di jalur Texas terdekat dengan
persimpangan lanjut ke California
3. Gerbong di persimpangan dan yang
berada di jalur Texas terdekat dengan
persimpangan dibuang
4. Berhenti. Simbol di California :
formula dalam notasi Reverse Polish
5. Berhenti. Terjadi kesalahan pada
formula asal (infix).
Jalur Texas ≈ stack
 pembelokan gerbong ke jalur Texas ≈ PUSH
 gerbong dari jalur Texas melanjutkan ke California ≈ POP
Algoritma konversi notasi infix  reverse polish dengan stack :
 Inisialisasi sebuah stack kosong
 Lakukan operasi-operasi berikut ini hingga akhir ekspresi infix :
 Ambil token selanjutnya dari ekspresi infix (konstanta, variabel, operator,
kurung buka atau kurung tutup)
 Jika token tersebut berupa :
 Kurung buka, PUSH kedalam stack
 Operan, tambahkan ke ekspresi postfix yang sedang dibangun
 Operator, dengan kondisi :
 Stack kosong, maka PUSH token tersebut ke stack
 Token memiliki prioritas lebih tinggi daripada elemen yang menempati top-of-stack, maka
PUSH token ke stack
 Selainnya, POP operator dari stack dan tambahkan ke ekspresi postfix yang sedang dibangun.
Ulangi pembandingan token dengan elemen pada top-of-stack. (Sebagai catatan : kurung buka
memiliki prioritas terendah dibandingkan operator yang lain)
 Kurung tutup, POP elemen stack dan tambahkan ke ekspresi postfix, hingga kurung
buka menempati top-of-stack. POP kurung buka tersebut, namun tidak ditambahkan
ke ekspresi postfix.
 Saat akhir ekspresi infix dicapai, POP seluruh isi stack dan tambahkan ke
ekspresi postfix.
Contoh
Infix
Reverse Polish
A+BxC
ABCx+
AxB+C
ABxC+
AxB+CxD
ABxCDx+
(A+B)/(C–D)
AB+CD-/
AxB/C
ABxC/
((A+B)xC+D)/(E+F+G) AB+CxD+EF+G+/
1.
2.
3.
4.
5.
Periksa tiap simbol dalam formula Reverse Polish, dimulai dari
simbol paling kiri hingga ditemukan operator.
Tuliskan operator tersebut berikut dua operan yang terletak
tepat disebelah kiri operator tersebut.
Hapus operator dan operan-operan tersebut dari formula
Reverse Polish, yang menghasilkan ‘lubang’ pada formula.
Eksekusi ekspresi yang telah dituliskan dan tuliskan hasil
eksekusi pada ‘lubang’ formula.
Jika saat ini formula Reverse Polish hanya terdiri dari satu nilai,
maka nilai tersebut melambangkan hasil eksekusi formula
secara keseluruhan dan iterasi algoritma selesai; sebaliknya,
kembali ke langkah pertama.
Formula Infix : ( 8 + 2 x 5 ) / ( 1 + 3 x 2 – 4 )
Formula Reverse Polish : 8 2 5 x + 1 3 2 x + 4 - /
 Inisialisasi stack kosong
 Ulangi langkah-langkah berikut hingga tercapai akhir ekspresi :
Ambil token selanjutnya dari ekspresi postfix
Jika token adalah operan, PUSH ke stack
Jika token adalah operator :
POP dua nilai teratas dari stack (jika ternyata stack tidak memuat
setidaknya dua nilai, maka eksekusi dihentikan karena ekspresi postfix
tidak dalam format yang benar)
 Eksekusi operator dengan menggunakan kedua operan tersebut
 PUSH hasil eksekusi kembali ke stack




 Saat akhir ekspresi tercapai, hasil evaluasi ekspresi secara
keseluruhan terletak pada top-of-stack
8
8
8
8
2
2
10
18
18
1188
18
18
1188
1188
1188
1
1
1
1
7
7
3
3
3
6
5
18
6
4
2
1
2
3
4
5
6
7
8
9
10
11
12
13