1 / 26

Macro Processor Fungsi Dasar Fitur Berorientasi Mesin Pilihan Rancangan Contoh Implementasi

Macro Processor Fungsi Dasar Fitur Berorientasi Mesin Pilihan Rancangan Contoh Implementasi. Instruksi macro. Instruksi macro (macro) Merupakan kemudahan notasi bagi programer untuk menulis versi steno sebuah program.

hubert
Download Presentation

Macro Processor Fungsi Dasar Fitur Berorientasi Mesin Pilihan Rancangan Contoh Implementasi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Macro ProcessorFungsi DasarFitur Berorientasi MesinPilihan RancanganContoh Implementasi

  2. Instruksi macro • 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.

  3. Macro Processor • 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

  4. Fungsi DasarDefinition macroInvokasi macro Ekspansi macroOne-Pass AlgorithmStruktur Data

  5. Definisi Macro • 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.

  6. Contoh Definisi Macro Definisi Macro Macro tidak memiliki label

  7. Contoh Definisi Macro Definisi macro Macro tidak memiliki label

  8. Invokasi Macro • 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.

  9. Contoh Invokasi Macro Invokasi macro

  10. Ekspansi Macro • 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.

  11. Ekspansi Macro • 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.

  12. Contoh Ekspansi Macro

  13. Contoh Ekspansi Macro .

  14. Contoh Ekspansi Macro

  15. Tidak Ada Label pada Macro • 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?

  16. Two-Pass Macro Processor • 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).

  17. Contoh Definisi Macro Recursif • 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. The same macro name

  18. Contoh Definisi Macro Rekursif

  19. Contoh Definisi Macro Rekursif

  20. One-Pass Macro Processor • 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.

  21. Struktur Data • 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.

  22. Struktur Data

  23. Algoritma • 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

  24. Menangani Definisi Macro Recursif • 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.

  25. Algoritma

  26. Algoritma

More Related