260 likes | 541 Views
Fitur Assembler Berorientasi Mesin (SIC/XE Assembler) Format Instruksi, Addressing Mode, dan Relokasi Program. Program Assembly SIC/XE. extended format. immediate addressing. indirect addressing. Program Assembly SIC/XE. Program Assembly SIC/XE. Keuntungan Addressing Mode SIC/XE.
E N D
Fitur Assembler Berorientasi Mesin (SIC/XE Assembler)Format Instruksi, Addressing Mode, dan Relokasi Program
Program Assembly SIC/XE extended format immediate addressing indirect addressing
Keuntungan Addressing Mode SIC/XE • Instruksi register-to-register • Lebih singkat dari instruksi register-to-memory. • Tidak ada referensi memori. • Immediate addressing mode • Tidak ada referensi memori. Operand sudah ada sebagai bagian dari instruksi. • Indirect addressing mode • Menghindari perlunya instruksi lain. • Relative addressing mode • Lebih singkat dari instruksi extended. • Relokasi program yang mudah.
Mengenai Format Instruksi • Directive START menspesifikasi alamat awal program yang merupakan 0: program yang dapat direlokasi. • Instruksi register-to-register: hanya mengkonversi mnemonic menjadi ekivalen bilangannya. • OPTAB: untuk opcode. • SYMTAB: di-load sebelumnya dengan nama register dan nilainya.
Mengenai Addressing Modes • PC atau base relative addressing • Menghitung displacement. • Displacement harus cukup kecil agar bisa masuk pada field 12-bit (-2048..2047 untuk PC relative mode, 0..4095 untuk base relative mode). • Format instruksi extended (4-byte) • Field 20-bit untuk displacement yang besar.
Cara Assembler MengenaliAddressing Mode • Extended format: +op m • Indirect addressing: op @m • Immediate addressing: op #c • Index addressing: op m,X • Relative addressing: op m • Pilihan pertama: PC relative (dipilih secara acak) • Pilihan kedua: base relative (jika displacement invalid pada PC relative mode) • Pilihan ketiga: error message (jika displacement invalid pada kedua relative mode)
Immediate Addressing Mode Instruction: 55 0020 LDA #3 010003 (00)16 0 1 0 0 0 0 (003)16 (01)16 (0)16 (003)16 Instruction: 133 103C +LDT #4096 75101000 (74)16 0 1 0 0 0 1 (01000)16 (75)16 (1)16 (01000)16
Extended Format Instruction: 15 0006 CLOOP +JSUB RDREC 4B101036 (48)16 1 1 0 0 0 1 (01036)16 (4B)16 (1)16 (01036)16
PC Relative Addressing Mode Instruction: 10 0000 FIRST STL RETADR 17202D 120003LDB #LENGTH 69202D : : 95 0030 RETADR RESW 1 (14)16 1 1 0 0 1 0 (02D)16 (17)16 (2)16 (02D)16 PC ditambah setelah setiap instruksi diambil dan sebelum dieksekusi. Yaitu, PC berisi alamat instruksi berikutnya. disp = (0030)16-(0003)16 = (002D)16
PC Relative Addressing Mode Instruction: 15 0006 CLOOP +JSUB RDREC 4B101036 : : 40 0017 J CLOOP 3F2FEC 45001AENDFILLDA EOF 032010 (3C)16 1 1 0 0 1 0 (FEC)16 (3F)16 (2)16 (FEC) 16 disp = (0006)16-(001A)16 = (FFEC)16
Base Relative Addressing Mode Instruction: 12 0003 LDB #LENGTH 69202D 13 BASE LENGTH : : 100 0033 LENGTH RESW 1 105 0036 BUFFER RESB 4096 : : 160 104E STCH BUFFER,X 57C003 (54)16 1 1 1 1 0 0 (003)16 (57)16 (C)16 (003)16 • PC relative tidak lagi dapat diterapkan • BASE directive secara eksplisit memberi informasi kepada assembler bahwa base register akan berisi alamat LENGTH (gunakan NOBASE untuk invalidasi) • LDB load alamat LENGTH ke dalam base register pada saat eksekusi disp = (0036)16-(0033)16 = (0003)16
Immediate + PC Relative Addressing Mode Instruction: 12 0003 LDB #LENGTH 69202D 13 BASE LENGTH 15 0006 CLOOP +JSUB RDREC 4B101036 : : 100 0033 LENGTH RESW 1 (68)16 0 1 0 0 1 0 (02D)16 (69)16 (2)16 (02D)16 disp = (0033)16-(0006)16 = (002D)16
(3C)16 1 0 0 0 1 0 (003)16 (3E)16 (2)16 (003)16 disp = (0030)16-(002D)16 = (0003)16 Indirect + PC Relative Addressing Mode Instruction: 70 002A J @RETADR 3E2003 80 002D EOF BYTE C’EOF’ 454F46 95 0030 RETADR RESW 1
Alasan Relokasi Program • Untuk menambah produktifitas mesin • Ingin load dan jalankan beberapa program pada saat yang sama (multiprogramming) • Harus dapat load program ke dalam memori jika ada ruang kosong • Alamat awal program yang sebenarnya tidak diketahui sampai waktu load
Program Absolut • Program dengan alamat awal yang dispesifikasi pada waktu assembly • Pada contoh SIC assembly program • Alamat mungkin invalid jika program di-load ke tempat lain. Instruction: 55 101B LDA THREE 00102D Dihitung dari alamat awal 1000
Hal-hal yang Perlu Direlokasi • Perlu dimodifikasi: • Bagian alamat dari instruksi yang menggunakan absolute (direct) addresses. • Tidak perlu dimodifikasi: • Instruksi register-to-register (tidak ada referensi memori) • PC atau base-relative addressing (relative displacement tetap sama, tidak bergantung pada alamat awal yang berbeda)
Cara Relokasi Alamat • Untuk Assembler • Untuk label alamat, alamatnya ditentukan relatif terhadap awal program (alasan untuk START 0) • Membuat record modifikasi untuk menyimpan lokasi awal dan panjang field alamat yang akan dimodifikasi. • Untuk loader • Untuk setiap record modifikasi, tambahkan alamat awal program yang sebenarnya ke field alamat pada waktu load.
Format Record Modifikasi • Satu record modifikasi untuk setiap alamat yang akan dimodifikasi • Panjangnya disimpan dengan format half-bytes (20 bit = 5 half-byte) • Lokasi awal merupakan lokasi byte yang berisibit-bit paling kiri dari field alamat yang akan dimodifikasi. • Jika field berisi half-byte dengan nilai ganjil, lokasi awal dimulai dari tengah byte pertama.
5 half-bytes Object Program yang dapat Direlokasi 15 +JSUB RDREC 35 +JSUB WRREC 65 +JSUB WRREC