Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Macro Processor Fungsi Dasar Fitur Berorientasi Mesin Pilihan Rancangan Contoh Implementasi.

Presentasi serupa


Presentasi berjudul: "Macro Processor Fungsi Dasar Fitur Berorientasi Mesin Pilihan Rancangan Contoh Implementasi."— Transcript presentasi:

1 Macro Processor Fungsi Dasar Fitur Berorientasi Mesin Pilihan Rancangan Contoh Implementasi

2 Instruksi macro (macro) –Merupakan kemudahan notasi bagi programer untuk menulis versi steno sebuah program. –Merepresentasikan kelompok statements yang umum digunakan pada source program. –Digantikan oleh macro processor dengan kelompok statement bahasa sumber yang berhubungan. Operasi ini dinamakan “expanding the macro” Contoh: –Misalnya perlu dilakukan saving isi semua register sebelum memanggil subrutin. –Ini memerlukan serangkaian instruksi. –Kita dapat mendefisikan dan menggunakan macro, SAVEREGS, untuk merepresentasikan rangkaian instruksi ini. Instruksi macro

3 Macro processor –Fungsinya terutama melibatkan substitusi satu kelompok karakter atau baris dengan yang lainnya. –Biasanya, ia tidak melakukan analisis teks yang ditanganinya. –Ia tidak peduli terhadap arti statement yang terlibat pada saat macro expansion. Dengan demikian, perancangan macro processor pada umumnya tidak berorientasi mesin. Macro processor digunakan pada –bahasa assembly –bahasa pemrograman tingkat tinggi, misalnya, C or C++ –command language Sistem Operasi –tujuan umum Macro Processor

4 Fungsi Dasar Definition macro Invokasi macro Ekspansi macro One-Pass Algorithm Struktur Data

5 Dua assembler directive yang baru digunakan pada definisi macro: –MACRO: mengidentifikasi awal definisi macro –MEND: mengidentifikasi akhir definisi macro Prototype (pattern) untuk macro: –Setiap parameter dimulai dengan ‘&’ label op operands name MACRO parameter : body : MEND Body: statement yang akan dibangkitkan sebagai ekspansi macro. Definisi Macro

6 Macro tidak memiliki label Contoh Definisi Macro

7 Definisi macro Contoh Definisi Macro Macro tidak memiliki label

8 Statement invokasi macro (macro call) memberi nama instruksi macro yang dipanggil dan argument pada ekspansi macro. Proses invokasi macro invocation pemanggilan subrutin sangat berbeda. –Statement macro body di-ekspan setiap kali macro dipanggil. –Statement subrutin hanya muncul sekali, tidak bergantung dari berapa kali subrutin tersebut dipanggil. Invokasi Macro

9 Invokasi macro Contoh Invokasi Macro

10 Setiap statement invokasi macro akan di- ekspan menjadi statement-statement yang membentuk body macro tersebut. Argumen dari invokasi macro disubstitusi untuk parameter pada prototipe macro. –Argumen dan parameter berhubungan satu sama lain menurut posisi mereka. Argumen pertama pada invokasi macro berhubungan dengan parameter pertama pada prototipe macro, dst. Ekspansi Macro

11 Comment line di dalam macro body telah dihapus, tetapi comment untuk statement individual tetap ada. Statement invokasi macro itu sendiri dimasukkan sebagai comment line. Label statement invokasi macro CLOOP tetap ada sebagai label statement pertama yangg dibangkitkan pada ekspansi macro. Ini memungkinkan programmer memakai instruksi macro dengan cara yang sama seperti mnemonic bahasa assembler. Ekspansi Macro

12 Contoh Ekspansi Macro

13 .

14

15 Masalah label di body macro: –Akan ada label yang duplikat, yang akan dianggap sebagai error oleh assembler, jika macro yang sama di-ekspan berkali-kali pada beberapa tempat di program program. Solusi: –Mudahnya, jangan gunakan label pada macro. Melainkan, gunakan PC-relative addressing secara eksplisit. Contoh, pada macro RDBUFF dan WRBUFF, JEQ * +11 JLT *-14 Cara ini tidak memudahkan dan cenderung menyebabkan error. –Solusi lain yang lebih baik? Tidak Ada Label pada Macro

16 Two-pass macro processor –Pass 1: Memproses definisi macro –Pass 2: Expand semua statement invokasi macro Masalah –Macro processor jenis ini tidak memungkinkan definisi macro rekursif, yaitu, body macro berisi definisi macro yang lain (karena semua macro harus didefinisikan pada saat pass pertama sebelum invokasi macro di-ekspan). Two-Pass Macro Processor

17 MACROS (untuk SIC) –berisi definisi RDBUFF dan WRBUFF yang ditulis dalam instruksi SIC. MACROX (for SIC/XE) –berisi definisi RDBUFF dan WRBUFF yang ditulis dalam instruksi SIC/XE. Program yang akan dijalankan pada SIC system dapat memanggil MACROS sementara program yang akan dijalankan pada SIC/XE dapat memanggil MACROX. Mendefinisikan MACROS atau MACROX tidak berarti mendefinsikan RDBUFF dan WRBUFF. Definisi ini hanya diolah ketika invokasi MACROS atau MACROX di-ekspan. Contoh Definisi Macro Recursif The same macro name

18 Contoh Definisi Macro Rekursif

19

20 One-pass macro processor yang berulang-alik antara definisi macro definition dan ekspansi macro dengan cara yang recursif dapat menangani definisi macro recursif. Karena struktur one-pass structure, definisi macro harus muncul pada source program sebelum statement yang memanggil macro tersebut. One-Pass Macro Processor

21 DEFTAB (tabel definisi) –Menyimpan definisi macro, termasuk macro prototype macro body –Comment lines dihilangkan. –Referensi ke parameter instruksi macro dikonversi ke notasi posisi untuk efisiensi dalam substitusi argumen. NAMTAB –Menyimpan nama macro –Brfungsi sebagai indeks untuk DEFTAB pointer ke awal dan akhir definisi macro ARGTAB –Menyimpan argumen invokasi macro invocation menurut posisi pada list argumen –Sementara macro di-ekspan, argumen dari ARGTAB disubstitusikan untuk parameter yang berhubungan pada macro body. Struktur Data

22

23 Prosedur MAIN procedure –iterasi GETLINE PROCESSLINE Prosedur PROCESSLINE –DEFINE –EXPAND –output source line Prosedur DEFINE –memasukkan entry yang sesuai ke DEFTAB dan NAMTAB Prosedur EXPAND –menetapkan nilai argumen pada ARGTAB –expand statement invokasi macro (seperti pada prosedur MAIN) iterasi –GETLINE –PROCESSLINE Prosedur GETLINE –Mendapatkan baris berikutnya yang akan diproses dari input file DEFTAB Algoritma

24 Pada prosedur DEFINE –Ketika definisi macro sedang dimasukkan ke DEFTAB, pendekatan yang normal adalah meneruskan sampai directive MEND ditemukan. –Cara ini tida bisa dipakai pada definisi macro recursif karena MEND pertama yang ditemui pada macro sebelah dalam macro akan mengakhiri seluruh proses definisi macro. –Untuk memecahkan masalah ini, counter LEVEL digunakan untuk mencatat level definisi macro. Menaikkan LEVEL sebesar 1 setiap kali directive MACRO terbaca. Menurunkan LEVEL sebesar 1 setiap kali directive MEND terbaca. MEND hanya dapat mengakhiri seluruh proses definisi macro ketika LEVEL mencapai 0. Proses ini hampir sama dengan menyesuaikan jumlah tanda kurung kiri dan kanan ketika scan ekspresi aritmatik. Menangani Definisi Macro Recursif

25 Algoritma

26


Download ppt "Macro Processor Fungsi Dasar Fitur Berorientasi Mesin Pilihan Rancangan Contoh Implementasi."

Presentasi serupa


Iklan oleh Google