Fitur Assembler yang Tidak Berorientasi Mesin Literal, Statement yang Mendefinisikan Simbol, Ekspresi, Blok Program, Control Sections dan Program Linking.

Slides:



Advertisements
Presentasi serupa
Pilihan Perancangan Assembler One-Pass dan Multi-Pass Assembler
Advertisements

Manajemen Memory 1 Manajemen Memory Sederhana dan Swapping
Cache Memori Oleh : Ahmad Fuad Hariri Fitriana Nelvi Tino Arif Cahyo
Pengayaan Software/Hardware dan Pengantarmukaan
DASAR-DASAR PEMROGRAMAN C
Arsitektur Komputer “Mode Pengalamatan”
Mode Pengalamatan.
Teknik Kompilasi Febuari 2013.
MANAJEMEN MEMORY.
Chapter 20 Pembentukan Kode.
RECORD.
Fitur Assembler Berorientasi Mesin (SIC/XE Assembler) Format Instruksi, Addressing Mode, dan Relokasi Program.
PEMROGRAMAN TERSTRUKTUR
Instruksi macro Instruksi macro (macro) Contoh:
Manajemen File.
ARSITEKTUR SET INSTRUKSI
Defiana Arnaldy, M.Si Manajemen Memori Defiana Arnaldy, M.Si
MEMORY (Manajemen Memori)
Manajemen File/Berkas
ARSITEKTUR SET INSTRUKSI
11. Set Intruksi : Teknik Pengalamatan
SET INSTRUKSI.
LOKASI DAN OPERASI MEMORI
MATERI 7 SISTEM OPERASI Managemen Memori Oleh : Mufadhol, S.Kom
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
Pengantar Bahasa Rakitan
ORGANISASI & ARSITEKTUR KOMPUTER 2 STRUKTUR & FUNGSI CPU IBP WIDJA, MT
Bahasa Mesin dan Assembly
Pertemuan 4 (Set Instruksi ARM)
SISTEM OPERASI Pertemuan 5 : Manajemen Memori
1. Elemen pada Microsoft Excel
Pertemuan 13 Code Genarator
Instruksi dalam CPU.
Pengenalan Assembler.
ARSITEKTUR SET INSTRUKSI
Manajemen Memori.
BAB IV Teknik Pemrograman
Pertemuan 3 (Bahasa Assembly)
Nilai dan Tipe Data Nilai dan Tipe data
Algoritma dan Pemrograman 2A
MODE PENGALAMATAN DAN SET INSTRUKSI
PENGANTAR LOGIKA & TEKNIKPEMROGRAMAN
Matakuliah : H0162/ Mikroprosesor Tahun : 2006 Versi : 1/0
ARSITEKTUR SET INSTRUKSI
Analisis semantik, kode antara dan pembangkitan kode
Pertemuan 2 Organisasi Komputer II
Pengenalan Assembler.
Semantics Analyser Contoh : A := ( A+B) * (C+D)
Membuat Dokumen dengan Software Pengolah Angka
ASSEMBLER #1 MK. PEMROGRAMAN SISTEM
ASSEMBLER #2 MK. PEMROGRAMAN SISTEM
Teknik Manajemen Memori
ASSEMBLER #3 MK. PEMROGRAMAN SISTEM
Pertemuan 2 (INSTRUKSI MESIN DAN PROGRAM)
Pengantar Bahasa Rakitan
ARSITEKTUR SET INSTRUKSI
Manajemen Proses.
Pengantar Bahasa Rakitan
PENGANTAR LOGIKA & TEKNIK PEMROGRAMAN
Ilustrasi kinerja CPU.
Manajemen Memori Pertemuan 14 & 15 Sistem Operasi (CSG3E3)
Sistem Operasi Teknik Informatika STT Wastukancana Purwakarta
ARSITEKTUR SET INSTRUKSI
MANAJEMEN MEMORY.
Pengantar Bahasa Rakitan
MANAJEMEN MEMORY.
Riyani Purwita Rachmawati, S.Pd
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:

Fitur Assembler yang Tidak Berorientasi Mesin Literal, Statement yang Mendefinisikan Simbol, Ekspresi, Blok Program, Control Sections dan Program Linking

Fitur Assembler yang Tidak Berorientasi Mesin Lebih berhubungan dengan isu mengenai: –Kemudahan programmer –Lingkungan software Contoh umum: –Literal –Statement yang mendefinisikan simbol –Ekspresi –Blok program –Control sections Assembler directive banyak digunakan untuk mendukung fitur ini

Literal Literal ekivalen dengan: –Mendefinisikan konstanta dengan eksplisit dan memberinya label alamat –Menggunakan label tersebut sebagai operand instruksi Alasan pemakaian literal: –Menghindari pendefinisian konstanta di tempat lain dan membuat label untuknya –Sehingga, nilai operand konstanta dituliskan sebagai bagian instruksi Cara penggunaan literal: –Literal diidentifikasi dengan prefix =, diikuti oleh spesifikasi nilai literal

Program Asli

Menggunakan Literal

Object Program Menggunakan Literal Sama seperti sebelumnya

Program Asli

Menggunakan Literal

Object Program Menggunakan Literal Sama dengan sebelumnya

Literal vs. Immediate Addressing Persamaan: –Field operand berisi nilai konstanta Perbedaan: –Immediate addressing: assembler meletakkan nilai konstanta sebagai bagian dari instruksi mesin –Literal: assembler menyimpan nilai konstanta di tempat lain dan meletakkan alamat tersebut sebagai bagian dari instruksi mesin

Literal Pool Semua operand literal dikumpulkan dalam satu atau lebih literal pool. Letak literal pool: –Pada akhir object program, langsung dibangkitkan mengikuti statement END –Pada lokasi ditemukannya directive LTORG Agar operand literal tetap dekat dengan instruksi yang menggunakannya

Duplicate Literal Duplicate literal: –Literal yang sama yang dipakai lebih dari satu kali pada program –Hanya satu kopi nilai yang dispesifikasi yang harus disimpan –Contoh, =X’05’ pada program contoh Cara mengenali the duplicate literal –Bandingkan string karakter yang mendefinisikannya Lebih mudah diimplementasi, tetapi memiliki masalah potensial (lihat selanjutnya) Contoh, =X’05’ –Bandingkan nilai data yang dibangkitkan Lebih baik, tetapi akan menambah kompleksitas assembler Contoh, =C’EOF’ dan =X’454F46’

Masalah Pengenalan Duplicate-Literal dengan Menggunakan String Karakter Mungkin ada beberapa literal yang memiliki nama yang sama, tetapi nilai yang berbeda Contoh, literal yang nilainya bergantung pada lokasinya pada program –Nilai pencacah lokasi yang ditandai dengan * BASE * LDB=* –Literal =* digunakan secara berulang pada program dengan nama yang sama, tetapi nilai yang berbeda Semua jenis literal ini harus disimpan pada literal pool

Implementasi Literal Struktur data: tabel literal LITTAB –Nama literal –Nilai dan panjang operand –Alamat LITTAB seringkali disusun sebagai tabel hash, dengan menggunakan nama atau nilai literal sebagai key

Implementasi Literal Pass 1 –Pada saat setiap operand literal dikenali Telusuri LITTAB untuk mencari nama atau nilai literal tersebut Jika literal telah ada, tidak ada yang harus dilakukan Jika tidak, literal ditambahkan ke LITTAB (simpan nama, nilai, dan panjang, tetapi alamat tidak) –Pada saat LTORG atau END ditemukan Scan LITTAB Untuk setiap literal dengan field yang kosong, tentukan alamat dan update LOCCTR untuk menyesuaikannya

Implementasi Literal Pass 2 –Pada saat setiap operand literal dikenali Telusuri LITTAB untuk mencari nama atau nilai literal tersebut Jika literal ditemukan, gunakan alamat asosiatif sebagai operand instruksi Jika tidak, error (tidak boleh terjadi) –Pada saat LTORG atau END ditemukan insert nilai data literal pada object program –Record modifikasi akan dibuat jika perlu

Statement yang mendefinisikan simbol Cara mendefinisikan simbol dan nilainya –Address label Label adalah nama simbol dan alamat yang ditentukan adalah nilainya FIRST STL RETADR –Assembler directive EQU simbol EQU nilai Statement ini memasukkan simbol ke SYMTAB dan memberinya nilai Nilai dapat berupa konstanta atau ekspresi –Assembler directive ORG ORG nilai

Penggunaan EQU Untuk menambah keterbacaan program, hindari penggunaan magic number, sehingga nilai konstanta lebih mudah ditemukan dan diubah –Ganti +LDT #4096 –dengan MAXLEN EQU LDT #MAXLEN Untuk mendefinisikan nama mnemonic untuk register –A EQU 0 –X EQU 1 –BASE EQU R1 –COUNT EQU R2

Penggunaan ORG Penentuan nilai tidak langsung: ORG nilai –Ketika menemukan ORG, assembler me-reset LOCCTR-nya ke nilai yang ditentukan –ORG akan memperngaruhi nilai semua label yang didefinisikan sampai menemukan ORG berikutnya –Jika nilai LOCCTR yang sebelumnya dapat diingat secara otomatis, kita dapat kembali ke penggunaan normal LOCCTR dengan hanya menuliskan ORG

Contoh Penggunaan ORG Perhatikan struktur data berikut ini: –SYMBOL: 6 bytes –VALUE: 3 bytes (one word) –FLAGS: 2 bytes Kita ingin melakukan referensi ke setiap field dari setiap entry

Tidak Menggunakan ORG Kita dapat mengambil field VALUE dengan LDA VALUE,X X = 0, 11, 22, … untuk setiap entry Offsets dari STAB Kurang terbaca dan berarti

Menggunakan ORG Ukuran field lebih berarti Restore LOCCTR ke nilai sebelumnya Set LOCCTR ke STAB

Forward reference tidak diperbolehkan untuk EQU dan ORG. Yaitu, semua term pada field nilai harus didefinisikan terlebih dulu pada program. Alasannya ialah bahwa semua simbol harus telah didefinisikan di Pass 1 pada two-pass assembler. Diperbolehkan Tidak diperbolehkan Masalah Forward-Reference

Tidak diperbolehkan Masalah Forward-Reference

Ekspresi Satu term sebagai operand instruksi dapat digantikan dengan ekspresi. STAB RESB 1100 STAB RESB 11*100 STAB RESB (6+3+2)*MAXENTRIES Assembler harus mengevaluasi ekspresi untuk menghasilkan satu alamat atau nilai operand. Ekspresi terdiri dari –Operator +,-,*,/ (pembagian biasanya didefinisikan untuk mendapatkan hasil integer) –Individual term Konstanta Simbol yang didefinisikan user Special term, misalnya, *, nilai LOCCTR pada saat itu

Masalah Relokasi pada Ekspresi Nilai term dapat bersifat –Absolut (independen terhadap lokasi program) konstanta –Relatif (terhadap awal program) Label alamat * (nilai LOCCTR) Ekspresi dapat bersifat –Absolut Hanya term absolut Term relatif berpasangan dengan tanda yang berlawanan untuk setiap pasangan –Relatif Semua term relatif kecuali satu dapat dipasangkan sebagaimana dideskripsikan pada “absolut”. Term relatif yang tersisa yang tidak berpasangan harus bertanda positif. Tidak boleh ada term relatif yang boleh masuk dalam operasi perkalian atau pembagian Ekspresi yang tidak memenuhi syarat “absolut” atau “relatif” harus ditandai dengan flag error.

Ekspresi Absolut Term relatif atau ekspresi secara implicit merepresentasikan (S+r) –S: alamat awal program –r: nilai term atau ekspresi relatif terhadap S Contoh –BUFFER: S+r1 –BUFEND: S+r2 Ekspresi, BUFEND-BUFFER, adalah absolut. –MAXLEN = (S+r2)-(S+r1) = r2-r1 (no S here) –MAXLEN means the length of the buffer area Ekspresi ilegal : BUFEND+BUFFER, 100-BUFFER, 3*BUFFER Nilai dihubungkan dengan simbol

Absolut atau Relatif Untuk menentukan tipe ekspresi, kita harus selalu tahu semua tipe simbol yang didefinisikan pada program. Kita perlu “flag” pada SYMTAB untuk indikasi.

Blok Program dan Control Section Walaupun source program secara logika berisi subrutin, data area, dsb, semuanya di-assemble ke dalam satu blok object code dengan instruksi mesin dan data muncul dengan urutan yang sama seperti pada source program. Untuk memberikan fleksibilitas: –Blok program Segmen kode yang disusun ulang dalam satu object program unit –Control section Segments kode yang diterjemahkan menjadi object program unit yang independen

Blok Program Sebagai contoh, digunakan tiga blok: –default: instruksi yang dapat dieksekusi –CDATA: semua area data yang panjangnya lebih kecil –CBLKS: semua area data yang terdiri dari blok memori yang lebih besar Assembler directive USE menunjukkan bagian source program mana yang termasuk dalam berbagai blok tersebut.

Pada saat awal, diasumsikan blok default. Program dengan Banyak Blok Program

Resume blok default Resume blok CDATA Program dengan Banyak Blok Program

Resume blok default Resume blok CDATA

Blok Program Setiap blok program sebenarnya bisa berisi beberapa segmen source program yang terpisah Secara logika, assembler akan menyusun kembali segmen-segmen ini untuk mengumpulkan bagian-bagian setiap blok. Hasilnya sama dengan programmer secara fisik menyusun kembali source statement untuk mengumpulkan source line yang termasuk dalam setiap blok.

Alasan Pemakaian Blok Program Untuk mencapai tujuan yang kontradiktif: –Memisahkan program menjadi blok-blok dengan urutan tertentu Area buffer yang besar dipindahkan ke akhir object program Penggunaan instruksi extended format atau base relative mode dapat dikurangi. (baris 15, 35, dan 65) Penempatan literal pool lebih mudah: hanya diletakkan sebelum area data yang besar, blok CDATA. (baris 253) –Area data bertebaran Keterbacaan program akan lebih baik jika area data diletakkan pada source program berdekatan dengan statement yang melakukan referensi kepadanya.

Cara Menyusun Ulang Kode Menjadi Blok Program Pass 1 –Tetap simpan LOCCTR yang terpisah untuk setiap blok program inisialisasi ke 0 ketika blok dimulai untuk pertama kali save ketika beralih ke blok yang lain restore ketika kembali ke blok sebelumnya –Untuk setiap label, berikan alamat yang relatif terhadap awal blok tempat label tersebut berada –Simpan nama atau nomer blok pada SYMTAB bersama dengan alamat relatif label yang diberikan –Nyatakan panjang blok sebagai nilai terakhir LOCCTR untuk setiap blok di akhir Pass1 –Untuk setiap blok, berikan alamat awal pada object program dengan menggabungkan blok-blok program dengan urutan tertentu

Cara Menyusun Ulang Kode Menjadi Blok Program Pass 2 –Hitung alamat untuk setiap simbol relatif terhadap awal object program dengan menambahkan lokasi simbol relatif terhadap awal bloknya alamat awal yang diberikan untuk blok ini

Loc/Block Object Program dengan Banyak Blok Program 0: default 1: CDATA 2: CBLKS Tidak ada nomer blok, karena MAXLEN merupakan simbol absolut

Object Program dengan Banyak Blok Program

Tabel untuk Blok Program Di akhir Pass 1:

Contoh Perhitungan Alamat LDA LENGTH Nilai operand (LENGTH) –Alamat 0003 relatif terhadap Blok 1 (CDATA)  alamat =0069 relatif terhadap program  alamat =0060 relatif terhadap PC, tempat alamat PC relatif terhadap program adalah =0009

Tidak perlu secara fisik menyusun kembali kode yang dibangkitkan pada object program untuk menempatkan blok program bersama-sama. Assembler hanya menyisipkan alamat load yang benar pada setiap Text record. Object Program

Blok Program yang Dimasukkan dalam Memori same order Penyusunan ulang dengan loading Tidak ada pada object program

Control Section Control section –merupakan bagian program yang mempertahankan identitasnya setelah assembly –sering digunakan untuk subrutin atau subdivisi logika lainnya dari suatu program –dapat di- assemble, di-load, dan di-relokasi secara independen –lebih fleksibel

Program Linking Program linking digunakan untuk menggabungkan control section yang berhubungan secara logika Masalah: –Assembler tidak mengetahui di mana control section yang lain akan ditempatkan pada waktu eksekusi. –Ketika suatu instruksi perlu melakukan referensi ke instruksi atau data pada control section lain, assembler tidak dapat mengolah referensi ini. –Assembler harus membangkitkan informasi untuk referensi semacam ini, disebut referensi eksternal, yang akan memungkinkan loader melakukan linking yang diperlukan.

Program dengan Multiple Control Section Control section pertama: COPY Mendefinisikan simbol eksternal Referensi eksternal Didefinisikan secara implisit sebagai simbol eksternal

Program dengan Multiple Control Section Control section kedua: RDREC Referensi eksternal Didefinisikan secara implisit sebagai simbol eksternal

Program dengan Multiple Control Section Control section ketiga: WRREC Referensi eksternal Didefinisikan secara implisit sebagai simbol eksternal

Assembler Directive untuk Control Section START: –memulai control section pertama –menentukan nama program sebagai nama control section –mendefinisikan nama control section sebagai simbol eksternal CSECT: –memulai control section baru –menentukan nama control section –mendefinisikan nama control section sebagai simbol eksternal EXTDEF: –Mendefinisikan simbol eksternal EXTREF: –menamai simbol yang didefinisikan pada control section lain

Cara Menangani Referensi Eksternal CLOOP +JSUB RDREC 4B Operand RDREC merupakan referensi eksternal. Assembler –tidak tahu di mana RDREC berada –menyisipkan alamat sebesar nol –hanya bisa menggunakan extended format untuk memberikan tempat yang cukup (yaitu, relative addressing untuk referensi eksternal adalah invalid) –mengirimkan informasi ke loader

Cara Menangani Referensi Eksternal MAXLEN WORD BUFEND-BUFFER Ada dua referensi eksternal pada ekspresi di atas, BUFEND and BUFFER. Assembler –menyisipkan nilai sebesar zero –mengirimkan informasi ke loader Menambahkan alamat BUFEND ke area data ini Mengurangi alamat BUFFER ke area data ini Pada baris 107, BUFEND dan BUFFER didefinisikan pada control section yang sama dan ekspresi tersebut dapat langsung dihitung MAXLEN EQU BUFEND-BUFFER

Object Code dengan Multiple Control Section

Cara Menangani Control Section Assembler –mengolah setiap control section secara independen –membuat LOCCTR yang terpisah (diinisialisasi ke 0) untuk setiap control section –menyimpan pada SYMTAB, control section tempat simbol didefinisikan –memungkinkan simbol yang sama digunakan pada control section yang berbeda –melaporkan error ketika berusaha mereferensi simbol pada control section yang lain, kecuali simbol tersebut didefinisikan sebagai referensi eksternal –membangkitkan informasi pada object program untuk referensi eksternal

Record Baru untuk Referensi Eksternal Memberi informasi mengenai simbol eksternal yang dinamai oleh EXTDEF membuat daftar simbol yang dipakai sebagai referensi eksternal, yaitu, simbol yang dinamai oleh EXTREF

Record Modifikasi yang Direvisi

Object Program COPY RDREC WRREC

Relokasi Program Sebagaimana untuk program linking, record Modifikasi yang direvisi masih dapat digunakan untuk relokasi program.

Ekspresi pada Multiple Control Section Extended restriction –Kedua terms pada setiap pasangan ekspresi harus berada di dalam control section yang sama Legal: BUFEND-BUFFER Illegal: RDREC-COPY Cara menerapkan pembatasan ini –Ketika ada referensi eksternal pada sebuah ekspresi, assembler tidak dapat menentukan apakah ekspresi tersebut legal. –Assembler mengevaluasi semua term yang dapat ia evaluasi, menggabungkannya untuk membentuk nilai ekspresi awal, dan membuat record Modifikasi. –Loader memeriksa adanya error pada ekspresi dan menyelesaikan evaluasi.