TEMA: ARSITEKTUR DAN ORGANISASI KOMPUTER

Slides:



Advertisements
Presentasi serupa
Nama kelmpok : maskar nurlailah. r
Advertisements

Organisasi dan Arsitektur Komputer
Struktur CPU.
PERTEMUAN MINGGU KE-13 PIPELINE DAN RISC.
Arsitektur Komputer “Instruksi Set Arsitektur”
Mode Pengalamatan.
Pertemuan ke - 5 Struktur CPU
Pertemuan 3 Arsitektur Komputer II
© 2009 Fakultas Teknologi Informasi Universitas Budi Luhur Jl. Ciledug Raya Petukangan Utara Jakarta Selatan Website:
Struktur CPU By Serdiwansyah N. A..
Organisai dan arsitektur komputer
SISTEM KOMPUTER STRUKTUR CPU NI KETUT ESATI, S.Si.
ARSITEKTUR SET INSTRUKSI
CPU (CENTRAL PROCESSING UNIT)
ARSITEKTUR SET INSTRUKSI
Mode Pengalamatan Mengatasi keterbatasan format instruksi
Organisasi dan Arsitektur Komputer
ORGANISASI KOMPUTER Mode Pengalamatan 10-Apr-17.
Central Processing Unit
ARSITEKTUR SET INSTRUKSI
William Stallings Computer Organization and Architecture 6th Edition
Organisasi dan Arsitektur Komputer
10. Set Intruksi : Karakteristik dan Fungsi
11. Set Intruksi : Teknik Pengalamatan
SET INSTRUKSI.
LOKASI DAN OPERASI MEMORI
ORGANISASI & ARSITEKTUR KOMPUTER 2 STRUKTUR & FUNGSI CPU IBP WIDJA, MT
MODE DAN FORMAT PENGALAMATAN.
Pertemuan 4 (Set Instruksi ARM)
Organisasi dan Arsitektur Komputer
Instruksi dalam CPU.
ARCHITECTURE COMPUTER
Pengenalan Assembler.
ARSITEKTUR SET INSTRUKSI
Set Instruksi:.
Mode Pengalamatan Mengatasi keterbatasan format instruksi
Pertemuan 3 (Bahasa Assembly)
Pertemuan 4 STRUKTUR CPU Author: LINDA NORHAN, ST.
Pertemuan III SET Instruksi.
MODE PENGALAMATAN DAN SET INSTRUKSI
Mode Pengalamatan.
CPU (CENTRAL PROCESSING UNIT)
Struktur Sistem Komputer
Matakuliah : H0162/ Mikroprosesor Tahun : 2006 Versi : 1/0
ARSITEKTUR SET INSTRUKSI
Mode Pengalamatan &Jenis-Jenis Instruksi
Pertemuan 2 Organisasi Komputer II
ORGANISASI & ARSITEKTUR KOMPUTER 2 SET INSTRUKSI IBP WIDJA, MT
Pengenalan Assembler.
Set Instruksi:.
Abdul Wahid STRUKTUR CPU JURUSAN TEKNIK INFORMATIKA
William Stallings Computer Organization and Architecture
ASSEMBLER #1 MK. PEMROGRAMAN SISTEM
Perbedaan: Organisasi Komputer dengan Arsitektur Komputer
Computer Organization and Architecture
CPU (CENTRAL PROCESSING UNIT)
ARSITEKTUR SET INSTRUKSI
Pertemuan ke - 6 Organisasi Komputer
Organisasi dan Arsitektur Komputer
Pertemuan IV Struktur dan Fungsi CPU (III)
PENGANTAR TEKNOLOGI KOMPUTER & INFORMASI 1A
STRUKTUR KOMPUTER DASAR
Pertemuan ke - 5 Struktur CPU
Pertemuan ke 3 Struktur CPU
ARSITEKTUR SET INSTRUKSI
Set Instruksi.
Universitas Trunojoyo
CPU (CENTRAL PROCESSING UNIT)
ARSITEKTUR SET INSTRUKSI
Karakteristik Set Instruksi 14 JP. Karakteristik Set Instruksi Pengertian Set Instruksi Set instruksi adalah kumpulan dari instruksi yang dapat dijalankan.
Transcript presentasi:

TEMA: ARSITEKTUR DAN ORGANISASI KOMPUTER Pokok Bahasan: Instruction Sets Addressing Modes & Format Disusun oleh: Sutriono Azhari rahmadi lubis Eka cahya UNIVERSITAS INDRAPRASTA PGRI JAKARTA

BAB I INSTRUCTION SETS Apakah instruksi set itu? Elemen-elemen instruksi Macam-macam instruksi Berapa banyak address digunakan? Macam-macam operand Macam-macam operasi

Apakah Instruksi set itu? 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).

ELEMEN-ELEMEN DARI INSTRUKSI MESIN (SET INSTRUKSI) 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 Macam-macam instruksi ada 2,yaitu: menurut jumlah operasi yang di-spesifikasikan menurut sifat akses terhadap memori atau register

Macam-macam instruksi menurut jumlah operasi yang di-spesifikasikan 1. O – Address Instruction 2. 1 – Addreess Instruction. 3. N – Address Instruction 4. M + N – Address Instruction

Macam-macam instruksi menurut sifat akses terhadap memori atau register 1. Memori To Register Instruction 2. Memori To Memori Instruction 3. Register To Register Instruction

Jenis instruksi Data processing: Arithmetic dan Logic Instructions Data storage: Memory instructions Data Movement: I/O instructions Control: Test and branch instructions

1. Data Processing Arithmatic & Logic Instruction 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.

1. Data Processing Arithmatic & Logic Instruction 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.

2. DATA STORAGE MEMORI INTRUCTION 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.

3. DATA MOVEMENT INPUT / OUPUT INSTRUCTION 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 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

Format Instruksi Suatu instruksi terdiri dari beberapa field yang sesuai dengan elemen dalam instruksi tersebut. Layout dari suatu instruksi sering disebut sebagai Format Instruksi (Instruction Format).

Jumlah alamat yang digunakan JUMLAH ALAMAT (NUMBER OF ADDRESSES) 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)

Macam-macam Operand 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

Tranfer Data 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

Macam-macam Operasi

BAB II ADDRESSING MODES & FORMAT Model-model addressing Direct and Indirect Addressing Register Addressing Instruction Format

ADDRESSING MODES Jenis-jenis addressing modes (Teknik Pengalama-tan) yang paling umum: Immediate Direct Indirect Register Register Indirect Displacement Stack

Tabel Basic Addressing Modes

Gambar Addressing Mode

Immediate Addressing 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 3

Immediate Addressing Diagram Instruction Opcode Operand 4

Direct Addressing 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 5

Direct Addressing Diagram Instruction Opcode Address A Memory Operand 6

Indirect Addressing (1) 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 7

Indirect Addressing (2) 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 8

Indirect Addressing Diagram Instruction Opcode Address A Memory Pointer to operand Operand 9

Register Addressing (1) 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 10

Register Addressing (2) 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 11

Register Addressing Diagram Instruction Opcode Register Address R Registers Operand 12

Register Indirect Addressing 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 13

Register Indirect Addressing Diagram Instruction Opcode Register Address R Memory Registers Pointer to Operand Operand 14

Displacement Addressing EA = A + (R) Address field memegang dua nilai Sebuah nilai dasar = R = register yang memegang perpindahan atau sebaliknya 15

Displacement Addressing Diagram Instruction Opcode Register R Address A Memory Registers Pointer to Operand + Operand 16

Relative Addressing 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 17

Base-Register Addressing Sebuah memegang perpindahan R memegang pointer ke alamat dasar R dapat menjadi eksplisit atau implisit misalnya segmen register di 80x86 18

Indexed Addressing A = dasar R = perpindahan EA = A + R Baik untuk mengakses array EA = A + R R + + 19

Combinations Postindex EA = (A) + (R) Preindex EA = (A+(R)) (Draw the diagrams) 20

Stack Addressing Operan adalah (secara implisit) di atas tumpukan misalnya Masukkan Pop atas dua item dari stack dan tambahkan 21

x86 Addressing Modes 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

x86 Addressing Mode Calculation

ARM Addressing Modes Load/Store 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

ARM Indexing Methods

ARM Data Processing Instruction Addressing & Branch Instructions 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.

ARM Load/Store Multiple Addressing 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

ARM Load/Store Multiple Addressing Diagram

Format Instruksi Siklus : fetch – decode – execute decoder : didesain permanen  format instruksi sudah tentu 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

Four-address format Terdapat empat field alamat dalam satu instruksi : Operan kiri dalam operasi binary Operan kanan dalam operasi binary Hasil operasi Instruksi berikutnya yang akan dieksekusi

Four-address format Contoh A := B + C – D artinya T  B + C ; go to 2 A  T – D ; go to next addr

Four-address format 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

Three-address format 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]

Three-address format Contoh : A := B + C – D  instruksi diletakkan secara berurutan.

Three-address format 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.

Two-address format 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 : ≡ B := B + C Jangan sampai operan yang masih dibutuhkan oleh operasi lain tertimpa oleh suatu hasil operasi!  gunakan lokasi memori temporary

Two-address format  lebih dari satu kemungkinan urutan instruksi Contoh : A := (B + C) / (B - D)  lebih dari satu kemungkinan urutan instruksi MOVE Address of T1 Address of B 100 Op Code Left Operand Right Operand ADD Address of T1 Address of C 101 Address of T2 102 SUB Address of T2 Address of D 103 DIV 104 Address of A 105 T1 B T1 + C T2 T2 + D T1 / T2 A

Two-address format 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

Contoh Buatlah Program dalam Format Instruksi Two- Address untuk menghitung Faktor Persekutuan Terbesar (FPB) dari 2 bilangan bulat.

FPB Input(A) Input(B) Repeat Until (R=0) Output (B) R  A mod B If R ≠ 0 then A  B B  R Until (R=0) Output (B) Jika bilangan A=15 dan B=9 Iterasi pertama: 15 mod 9 =6 sehingga R<>0 maka A=9 dan B=6 Iterasi kedua : 9 mod 6 = 3 sehingga R<>0 maka A=6 dan B=3 Iterasi ketiga : 6 mod 3 =0 maka r=0 dan B=fpb=3

FPB : TWO-ADDRESS FORMAT 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) 15-12=3A 3 comp 0  12 mod 3 =0

One-address format 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.

One-address format Contoh : ADD  operan kedua dan hasil berada pada register R0 : ≡ CON(R0)  CON(A) + CON(R0)

One-address format A := B + C – D

One-address format 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

Zero-address 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).

Zero-address format Operasi : PUSH : menambahkan elemen pada stack diatas elemen teratas POP : mengambil elemen teratas dari stack.

Zero-address format ADD  ambil dua elemen teratas dari stack, jumlahkan dan kembalikan hasil penjumlahan ke stack. A := (B + C) – D

Zero-address format 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) MULT Top of stack  CON(Top) * CON(Top-1) DIVIDE Top of stack  CON(Top) / CON(Top-1) 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

Zero-address format 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)

Konversi notasi : infix - postfix E. W. Dijkstra. : formula  variabel, operator dyadic (+, -, x, /, ‘(’ dan ‘)’),  (simbol awal dan akhir formula) Tanda  yang pertama selalu berbelok terlebih dahulu ke Texas.

Konversi notasi : infix - postfix Tabel keputusan : Gerbong di persimpangan belok ke Texas Gerbong di jalur Texas terdekat dengan persimpangan lanjut ke California Gerbong di persimpangan dan yang berada di jalur Texas terdekat dengan persimpangan dibuang Berhenti. Simbol di California : formula dalam notasi Reverse Polish Berhenti. Terjadi kesalahan pada formula asal (infix). Gerbong di persimpangan  + - x / ( ) Gerbong di Jalur Texas terdekat dg persimpangan 4 1 5 2 3

Konversi notasi : infix - postfix Jalur Texas ≈ stack pembelokan gerbong ke jalur Texas ≈ PUSH gerbong dari jalur Texas melanjutkan ke California ≈ POP

Konversi notasi : infix - postfix 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.

Konversi notasi : infix - postfix Contoh Infix Reverse Polish A + B x C A B C x + A x B + C A B x C + A x B + C x D A B x C D x + ( A + B ) / ( C – D ) A B + C D - / A x B / C A B x C / ( ( A + B ) x C + D ) / ( E + F + G ) A B + C x D + E F + G + /

Evaluasi Notasi Reverse Polish 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.

Evaluasi Notasi Reverse Polish Formula Infix : ( 8 + 2 x 5 ) / ( 1 + 3 x 2 – 4 ) Formula Reverse Polish : 8 2 5 x + 1 3 2 x + 4 - /

Evaluasi Notasi Reverse Polish 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

Evaluasi Notasi Reverse Polish

Evaluasi Notasi Reverse Polish