ASSEMBLER #2 MK. PEMROGRAMAN SISTEM Jurusan Sistem Komputer-S1 Universitas Gunadarma
Tahapan Memprogram Menggunakan Assembly Identifikasi informasi yang diperlukan untuk melakukan suatu tugas. Merancang struktur data yang sesuai untuk merekam informasi. Tentukan proses yang diperlukan untuk mendapatkan dan mempertahankan informasinya Tentukan proses yang diperlukan untuk melakukan tugas.
Keuntungan Memprogram Menggunakan Assembly Keuntungan Assembly dibandingan dengan bahasa mesin adalah penggunaan symbolic operand
Proses Assembly Proses Penterjemahan + = Analysis of source text Synthesis of target text Translation from Source Text to Target Text + = Phase Analysis : mencari arti dari source text, dengan menggunakan struktur tatabahasa (literal, syntax, semantic) Literal = arti atau terjemahan, syntax = aturan menulis kalimat, semantic = arti sebuah kalimat Phase Synthesis : pemilihan machine operation code yang sesuai dengan mnemonic code https://kbbi.web.id/analisis analisis/ana·li·sis/ n 1 penyelidikan terhadap suatu peristiwa (karangan, perbuatan, dan sebagainya) untuk mengetahui keadaan yang sebenarnya (sebab-musabab, duduk perkaranya, dan sebagainya); https://kbbi.web.id/sintesis sintesis/sin·te·sis/ /sintésis/ n 1 paduan (campuran) berbagai pengertian atau hal sehingga merupakan kesatuan yang selaras
Fase Synthesis Perintah assembly MOVER BREG,ONE Alamat satu word memori dengan nama ONE terkait (tergantung pada program sumber dibuat tersedia oleh fase analisis) Kode op mesin sesuai dengan mnemonik MOVER (tidak tergantung pada program sumber tergantung bahasa assembly) Sehingga dalam fase ini menggunakan dua struktur data: Simbol Tabel (nama, alamat) - dibangun berdasarkan fase analisis Tabel Mnemonik (mnemonik, opcode, panjang)
Fase Analysis Fungsi utamanya adalah membangun tabel simbol. Konsep ”Mengalokasi Memori” Untuk menerapkan alokasi memori struktur data disebut location counter (LC). LC selalu dibuat untuk memuat alamat dari sejumlah word memori berikutnya ke dalam program target. Menetapkan nilai awal ke suatu konstanta yang ditentukan pada perintah START. Untuk memperbarui isi LC, kebutuhan fase analisis untuk mengetahui panjang instruksi yang berbeda.
Struktur Data Assembler Mnemonic Opcode Length ADD 01 1 SUB 02 Mnemonic Table Source Program Target Program Analysis Phase Synthesis Phase Symbol Address AGAIN 104 N 113 Symbol Table Catatan : Data Access Control Transfer
Skema Sederhana Assembly Phase Analysis Mengisolasi/memisahkan label, mnemonic opcode dan operand field yang ada pada statement Memasukkan simbol yang ditemukan pada label field dan alamat yang akan dituju machine word ke dalam Symbol Table. Melakukan validasi mnemonic opcode dengan melihat pada Mnemonic Table Menentukan alamat yang dibutuhkan statement berdasar pada mnemonic opcode dan operand field pada statement. Proses perhitungan alamat awal machine word mengikuti target code yang dibangkitkan untuk statement tersebut (Location Counter-LC processing)
Skema Sederhana Assembly Phase Syntesis Menghasilkan machine operation code yang berkorespondensi dengan mnemonic opcode yang telah dicari pada tabel mnemonic. Menghasilkan alamat operand dari Symbol Tabel. Melakukan sintesa instruksi machine
Equivalent target code Pass Structure Assembly Translasi statement demi statemet program assembly Assembly languange statement Analysis Equivalent target code Synthesis Contoh : Forward reference !!!
Pass Structure Assembly (Cont… Dalam pemrograman Assembly sering ditemui Forward Reference, yaitu symbol/label yang baru muncul setelah program tersebut menjadi acuan (lihat contoh pada slide sebelumnya…) Solusi untuk forward reference adalah melakukan proses terhadap source statement lebih dari satu kali secara beberapa tahap atau dikenal dengan konsep translator pass Translator Pass adalah penelusuran secara menyeluruh source program input oleh translator hingga mencapai equivalent representation Single Pass Translation, translasi yang dilakukan statement demi statement Multi/Two Pass Translation, translasi yang dilakukan sekelompok statement yang membutuhkan banyak pass
Struktur Pass Assembly Two Pass Translation Dapat menangani forward reference dengan mudah. Proses Location Counter LC dilakukan pada pass pertama dan simbol didefinisikan dalam program yang dimasukkan ke dalam tabel simbol. Pass kedua mensintesis bentuk target menggunakan informasi alamat yang ditemukan di tabel simbol. Akibatnya, pass pertama melakukan analisis sumber program sedangkan pass kedua melakukan sintesis target program
Two pass assembly Data Structures TP SP Pass II Pass I Data Access Intermediate Code Control Transfer
Skema Multi/ Two pass Translation assembly Source program Pass I Pass II Symbol Table Target program Intermediate code Unit pada Source Program mentranslasikan semua bagian program. Pada fase analisis (pass I), proses LC dikerjakan, simbol yang didefinisikan pada program dimasukkan ke dalam Symbol Table. Selama Pass II, statement diproses untuk mensintesa target program. Semua simbol dan alamat yang ada di symbol table tidak akan menimbulkan forward reference. “equivalent representation” dilakukan dengan elaborasi pada hasil analisa source statement untuk mencegah duplikasi (pada saat pemisahan field label, mnemonic opcode dan operand field) yang direpresentasikan dalam bentuk intermediate code. Karena adanya intermediate code ini menjadi penyebab two pass lebih lambat dibandingan single pass.
Single Pass Translation Solusi forward reference dengan single pass translation adalah dengan cara: meninggalkan instruksi yang memuat forward reference dalam keadaan tidak selesai hingga alamat reference symbol diketahui. Alamat operand pada bagian akhir disimpan pada Table Incomplete Instruction (TII) Di akhir program, semua masukkan pada table diproses secara lengkap Keuntungan : setiap source statement hanya diproses satu kali Kekurangan : membutuhkan area storage yang besar karena fase analysis dan fase synthesis dijalankan bersamaan
Perancangan Two Pass Assembler Pass I Memisahkan symbol, mnemonic code dan operand field Menentukan kebutuhan storage untuk setiap assembly languange statement dan update location counter (LC) Membangun symbol table Merancang intermediate code untuk setiap assembly languange statement Pass II Mensintesa target code dengan memproses intermediate code yang digenerate pada Pass I
Single Pass Translation Pengolahan LC dan konstruksi tabel simbol diproses seperti dalam two pass translation. Masalah forward references dikerjakan menggunakan proses yang disebut ”backpatching” Field operand dari sebuah instruksi yang berisi forward references dibiarkan kosong pada awalnya. Alamat dari simbol forward references dimasukkan ke dalam bidang ini saat definisinya ditemukan.
Advanced Assembler Directives ORIGIN ORIGIN <address spec> Dimana <address spec> adalah <operand spec> atau <constant> Directive ini mengindikasikan bahwa LC seharusnya di set ke address <address spec>. Hal ini berguna ketika target tidak terdiri dari memory words yang berurutan .
Advanced Assembler Directives EQU <symbol> EQU <address spec> Dimana <address spec> adalah <operand spec> atau <constant> Mendefinisikan symbol dengan <address spec>. LTORG Mengijinkan programmer untuk menempatkan suatu literal . Secara default, assembler menempatkan setelah END statement
Literals Pada setiap LTORG statement dan juga END statement, assembler mengalokasikan memori ke literals dari literal pool. Pool berisi semua literals yang digunakan dalam program dimulai dari awal program atau dimulai dari akhir LTORG statement.
Flowchart Pass 1 Assembler
Pass I Assembler Dalam Pass I assembler digunakan beberapa table : OPTAB : table mnemonic opcode dan informasi lain yang terkait SYMTAB : symbol table LITTAB : literal table Struktur data yang digunakan pada Pass I Assembler Mnemonic opcode Class Machine opcode Length LOAD 1 (Imperative) 04 1 DS 2 (Declarative) R#7 - START 3 (Directive) R#11 STORE 05 OPTAB
Pass I Assembler (cont.) Struktur data yang digunakan pada Pass I Assembler 17