Pilihan Perancangan Assembler One-Pass dan Multi-Pass Assembler
One-Pass Assembler One-pass assembler digunakan ketika Second pass source program perlu atau ingin dihindari storage eksternal untuk file intermediate antara dua pass berjalan lambat atau tidak memudahkan untuk digunakan Masalah utama: forward reference ke data dan instruksi Satu cara mudah untuk mengeliminasi masalah ini: menuntut semua area didefinisikan sebelum di-referensi. Mungkin dilakukan, walaupun tidak memudahkan, jika dilakukan pada data item. Forward jump untuk instruction item tidak dapat dieliminasi dengan mudah.
Contoh Program untuk One-Pass Assembler
Contoh Program untuk One-Pass Assembler
Contoh Program untuk One-Pass Assembler
Load-and-Go Assembler Load-and-go assembler membuat object code-nya di memori untuk immediate execution. Tidak ada object program yang dituliskan, loader tidak diperlukan. Berguna untuk sistem yang berorientasi pada pengambangan dan pengujian program sehingga efisiensi proses assembly merupakan pertimbangan penting.
Cara Menangani Forward Reference Load-and-go assembler Menghilangkan alamat operand jika simbol belum didefinisikan. Memasukkan simbol yang tak terdefinisi ini ke dalam SYMTAB dan memberi keterangan bahwa belum terdefinisi. Menambahkan alamat dari alamat operand ini ke daftar forward reference yang berhubungan dengan SYMTAB entry. Scan daftar referensi menyisipkan alamat ketika definisi simbol tersebut ditemukan. Melaporkan error jika masih ada SYMTAB entry yang menunjukkan simbol-simbol tak terdefinisi pada akhir program. Menelusuri SYMTAB untuk mencari simbol yang diberi nama pada statement END dan melompat ke lokasi ini untuk mulai eksekusi jika tidak ada error.
Object Code pada Memori dan SYMTAB Setelah scan baris 40
Object Code pada Memori dan SYMTAB Setelah scan baris 160
One-Pass Assembler yang Menghasilkan Object Program Jika operand berisi simbol yang tak terdefinisi, gunakan 0 sebagai alamat dan tuliskan Text record ke object program. Forward reference dimasukkan ke dalam list (daftar) seperti pada load-and-go assembler. Ketika definisi simbol ditemukan, assembler membuat satu Text record lain dengan alamat operand yang benar untuk setiap entry pada daftar referensi. Ketika di-load, alamat 0 yang tidak benar akan di-update oleh Text record berikutnya yang berisi definisi simbol.
Object Program dari One-Pass Assembler
Multi-Pass Assembler Tidak memperbolehkan forward references pada definisi simbol: Pembatasan ini tidak merupakan masalah yang serius. Forward reference cenderung menimbulkan kesulitan untuk orang yang membaca program. Memungkinkan forward reference Untuk memberikan flexibilitas yang lebih luas Solusi: Multi-pass assembler yang dapat melakukan pass sebanyak yang diperlukan untuk mengolah definisi simbol. Hanya bagian program yang melibatkan forward reference pada definisi simbol yang di-save untuk multi-pass reading.
Multi-Pass Assembler Untuk two pass assembler, forward reference pada definisi simbol tidak diperbolehkan: ALPHA EQU BETA BETA EQU DELTA DELTA RESW 1 Alasan: definisi simbol harus diselesaikan pada pass 1. Motivasi untuk menggunakan a multi-pass assembler DELTA dapat didefinisikan pada pass 1 BETA dapat didefinisikan pada pass 2 ALPHA dapat didefinisikan pada pass 3
Implementasi Tabel simbol digunakan untuk menyimpan definisi simbol yang memakai forward reference untuk menunjukkan simbol yang bergantung pada nilai yang lain untuk memfacilitasi evaluasi simbol Untuk forward reference pada definisi simbol, di dalam SYMTAB disimpan: nama simbol pendefinisian ekspresi jumlah simbol tak terdefinisi pada ekspresi yang mendefinisikan simbol tak terdefinisi (ditandai dengan flag *) yang berhubungan dengan daftar simbol bergantung pada simbol tak terdefinisi ini. Ketika simbol didefinisikan, secara rekursif kita dapat mengevaluasi ekspresi simbol, bergantung pada simbol yang baru didefinisi.
Contoh Forward Reference
Contoh Forward Reference 1 HALFSZ EQU MAXLEN/2 Satu simbol tak terdefinisi pada ekspresi yang mendefinsikan Ekpresi yang mendefinsikan Simbol tak terdefinisi depending list
2 MAXLEN EQU BUFEND-BUFFER Simbol tak terdefinisi depending list Dua simbol tak terdefinisi pada ekspresi yang mendefinisikan Ekspresi yang mendefinisikan Simbol tak terdefinisi depending list
3 PREVBT EQU BUFFER-1 Ditambahkan ke list
4 BUFFER RESB 4096
5 BUFEND EQU *