350 likes | 806 Views
Element dari Bahasa Pemrograman Assembler. Bahasa assembly dikategorikan sebagai bahasa tingkat rendah (low level languange ). Ini untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine dependent.
E N D
Element dariBahasaPemrograman Assembler • Bahasa assembly dikategorikansebagaibahasatingkatrendah (low level languange). Iniuntukmenggambarkankekhususannyasebagaibahasa yang berorientasipada machine dependent. • Untukmembandingkanbahasamesindanbahasa assembly, kitadapatmelihatnyadaritigakarakteristikberikut : 1. Mnemonic operation code 2. Symbolic operand specification 3. Declaration of data/storage area
1. Mnemonic operation code • .Sebagaipengganti numeric operation code (opcodes) yang digunakanpadabahasamesin, digunakanmnemonic code padabahasa assembly. • Selainkemudahandalampenulisannyadibandingkandaribahasamesinjugamendukungpelacakankesalahansepertikesalahanpenulisan operation code. • Gambar 2.1. berikutmenunjukkandaftarinstuksi operation codes daribahasadanbahasa assembly.
2. Symbolic operand specification • Penamaan simbol diasosiasikan sebagai suatu data atau instruksi. • Operand lebih menunjukkan symbolic reference dibandingkan dengan alamat mesin suatu data atau instruksi. Hal ini akan mempermudah pada saat dilakukan modifikasi program. • Contoh : • MOV AH, 56h • SUB DX, AX
3. Declaration of data/storage area • Data dapat dinyatakan dalam notasi desimal. Ini dilakukan untuk mencegah konversi secara manual dari konstanta ke dalam representasi internal mesin. • Sebagai contoh : -5 menjadi (11111010)2 10.5 menjadi (41A80000)16 BISA BUKTIKAN CARANYA ???
Suatu statement bahasa assembly mempunyaibentukumum :[Label] Menmonic _OpCode Operand [operand…] • Tandakurungsikumenunjukkanisididalamnya, bolehdigunakanatautidakdalam statement tersebut (bersifat optional) sebagaicontoh : label • Jika Label menunjukkansuatu symbolic name akandibuatdalam machine word untukkeperluan assembly statement. • jik operand lebihdarisatu, digunakantanda “koma” untukmemisahkannya. • Jikadigunakan index, nomor index register ditunjukkandalamsebuahsimbol, seperticontohberikut : AGAIN LOAD NUMBER(4) • Dimana ‘4’ menunjukkan register yang memiliki index. • Label AGAIN diasosiasikandenganinstruksimesin yang dihasilkanuntuk statement LOAD.
Program assembly mengenal tiga jenis statement : (i) Imperative statement (ii) Declarative statement (iii) Assembler directive statement.
Imperative Statement • Statement imperative dalam bahasa assembly ditunjukkan dengan suatu tindakan yang dikerjakan selama eksekusi program assembly. • Setiap statement imperative ditranslasikan ke dalam instruksi mesin. • Format instruksi : Label
Declarative Statement • Statement declarative dalam bahasa assembly menunjukkan konstanta atau storage area pada suatu program. Sebagai contoh : A DS 1 secara sederhana storage area sebesar 1 word ditunjukkan dengan sebuah label A. DS di sini menunjukkan Declare Storage (DS). • Suatu konstanta dideklarasikan melalui Declare Constant (DC) statement, contohnya : ONE DC ‘1’ • maksud dari statement di atas adalah label ONE berisi konstanta 1. • Programmer dapat mendeklarasikan kontanta dalam desimal, binary, hexadesimal, dsb. Assembler akan mengkonversi bentuk tersebut ke dalam bentuk internal yang tepat.
Assembler Directive • Statement jenisinitidakmerepresentasikaninstruksimesinkedalamsuatuobjek program ataumengalokasikan storage untukkonstantaatau variable program. • Sebaliknya, statement inisecaralangsungmengarahkan assembler untukmengambilalihaksiselamaproses assembling program. • Statement inidigunakanuntukmenunjukkanbagaimana input program assembly dibentuk, sebagaicontoh : START 100 • statement tersebutmerupakankatapertamadariobjek program yang dibuatoleh assembler untukmenempatkanlokasimesinpadaalamat ‘100’. • Begitupuladenganstatement : END, yang mengindikasikantidakadalagibahasa statement bahasa assembly yang akandiproses. • ContohInstruksi-instruksidalam Assembler Directive : SEGMENT, ENDS (END SEGMENT) , ASSUME , DB, DW, LENGTH , OFFSET , … dll.
2.2. Proses Assembly • Untukmembangunskemaprosestranslasidarisatubahasakebentuklainnya, halpertama yang harusdilakukanadalahmengindentifikasikantugas-tugasdasaryang harusdikerjakannyadalamprosestranslasitersebut. 2.2.1. ProsesTranslasi Prosestranslasidarisatubahasa natural (Inggris, Perancis) kebentuk coding / decoding pesanrahasia. • Secaraumum model prosestranslasidapatdirepresentasikansebagaiberikut :
Dalam FASE ANALISIS, focus padapenentuanartidari source text. Untukmemahamiartidari source text tersebut, kitamengetahuiaturan yang membentuk source text tersebut. • Dalamaturanstrukturtatabahasa (grammar), dikenalistilahsyntax dan semantic. Perhatikan statement berikut : AGAIN LOAD RESULT + 4 • Dalam statement diatas, AGAIN menunjukkan label field, LOAD menunjukkanopcode mnemonic field dan RESULT + 4 menunjukkan operand field. • Bilakitamelihatlebihdalamlagikedalam operand field, kitadapatmenemukanbahwa RESULT + 4 adalah expression operand yang valid dansesuaidenganaturanbahasa. Dalambahasa assembly, aturanpenulisansuatu statement sangatsederhana.
Dalam FASE SINTESIS, dilakukan pemilihan machine operation code yang sesuai dengan mnemonic LOAD dan menempatkannya pada machine instruction opcode field. • Evaluasi korespondensi pengalamatan dilakukan untuk operand expression ’RESULT + 4’ dan menempatkannya pada alamat dari machine instruction.
2.2.2. SkemaSederhana Assembly • Fase Analysis • Memisahkan label, mnemonic operation code dan operand field yang adapada statement • Memasukkansimbolyang ditemukanpada label field danalamat yang akandituju machine word kedalamSymbol table. • Melakukan validasi mnemonic opcode dengan melihat pada Mnemonic table • Menentukanalamatyang dibutuhkan statement berdasarpada mnemonic opcodedan operand field pada statement. Prosespenghitunganalamatawal machine word mengikuti target code yang dibangkitkanuntuk statement tersebut (Location Counter (LC) processing) • FaseSyntesis • Menghasilkan machine opcodeyang berkorespondensidengan mnemonic opcode yang telahdicaripadamnemonic table • Menghasilkan alamat operand dari Symbol table • Melakukansintesainstruksi machine
2.2.3. Pass Structure pada Assembler • Padapembahasandiatas, kitatelahmengidentifikasikanfungsifaseanalisisdansintesisdari assembler. • Selanjutnyamelihatfase program assembly iniberdasarkanstatmentdemi statement hinggamenghasilkan target program.
Padacontohdiatasterlihatbahwa FIVE merupakan label yang menunjukpadaalamatdimanaisidari FIVE tersebutdisimpan. • Dalamkasusini FIVE tidakterdefinisisebelumnya. Olehkarenaitu, penterjemahanbentukinidisebut forward reference. • Padakasus forward reference alamatdari label harusdikenaliuntukditerjemahkankedalamsuatu program yang semestinya. Solusi yang ditawarkanadalahkitaperlumelakukanprosesterhadap source statement lebihdarisatu kali ataudilakukansecarabeberapatahap. • Hal inidikenaldengankonsep translator pass.
Translator pass adalah penelusuran secara menyeluruh source program input oleh translator hingga mencapai equivalent representation. • Translasi yang dilakukan statement demi statement disebut single pass translation, • sedangkan translasi yang dilakukan sekelompok statement yang membutuhkan banyak pass disebut multipass translation.
A. Multi-Pass Translation • Multi pass translation dalam program bahasa assembly dapatmenanganimasalah forward reference. • Unit source program digunakanuntuktujuanmentranslasisemuabagian program. • Ketikafaseanalisisakanmengerjakan : • memproses LC (Location Counter) dan • Memasukkansimbol yang didefinisikandalam program kedalam symbol table. • Selama second pass (pass II), statement diprosesdengantujuanmensintesa target form. Semuasimboldanalamat yang dapatditemukandalam symbol table tidakakanmenimbulkan forward reference pada assembly.
Kalimat “equivalent representation” digunakan pada translasi yang membutuhkan elaborasi (teliti & terperinci). • Sering kali ketika proses pemisahan field label, mnemonic opcode dan operand field terjadi duplikasi. Untuk mengurangi duplikasi tersebut, hasil analisa source statement dari first pass (pass I) direpresentasikan dalam internal form pada source statement (disebut intermediate code).
Skema two pass assembler denganmenggunakan intermediate code form Selainmembangun intermediate code, suatu assembler pass jugamembangundan/ataumengganti data base yang digunakansebagaisubsequent pass. Karenakebutuhanuntukmembangundanmemproses intermediate code, suatu multi pass translator menjalankanfungsinyalebihlambatdibandingkandengan single pass translation.
B. Single Pass Translation • Dalam single pass translation, pemecahan forward reference dapatditanganisebagaiberikut : • instruksi yang memuat forward reference dapatditinggalkandalamkeadaantidakselesaihinggaalamat reference symbol diketahui. • Alamat operand padabagianakhirdapatdisimpanpadaTable of Incomplete Instruction (TII). • Di akhir program assembly, semuamasukanpadaTII dapatdiprosessecaralengkapsesuaiinstruksinya. • Keuntunganmenggunakan single pass translation adalah • setiap source statement hanyadiprosessatu kali. • Prosesinilebihcepatbiladibandingkandengan multi pass translation. Kekurangan: butuharea storage yang besar, sebagaiakibatdijalankannyafase analysis dan synthesis pada pass yang sama.
Secara umum dikenal ada dua macam tipe single pass translation / one pass, yaitu : - single pass translation yang menghasilkan kode objek langsung ke memori, yang mengakibatkan eksekusi menjadi lebih cepat. - single pass translation yang menghasilkan berbagai tipe pemrograman untuk keperluan eksekusi selanjutnya
2.3. Perancangan Two Pass Assembler • Pass I • memisahkan symbol, mnemonic opcodedan operand field • menentukan storage yang dibutuhkanuntuksetiap statement bahasa assembly danmeng-update location counter • membangun symbol table • merancang intermediate code untuksetiap statement bahasa assembly • Pass II • mensintesa target code denganmemproses intermediate code yang dibangkitkanselama pass I
Pada Pass I digunakanbeberapa table, yaitu : (i) OPTAB : table mnemonic opcodedaninformasi lain yang terkait (ii) SYMTAB : symbol table (iii) LITTAB : table literal yang digunakandalam program
Make it faster! Sampe.. Sinidulu.. Brooo