Instruksi macro Instruksi macro (macro) Contoh:

Slides:



Advertisements
Presentasi serupa
Pilihan Perancangan Assembler One-Pass dan Multi-Pass Assembler
Advertisements

ASSEMBLER PERTEMUAN KE-1
Pemograman berorientasi prosedur merupakan bahasa pemrograman yang melibatkan fungsi-fungsi atau prosedur-prosedur sebagai sub program untuk membentuk.
Menggunakan Fungsi Logika pada Ms Excell
JWASM Macro.
Teknik Kompilasi Febuari 2013.
Chapter 20 Pembentukan Kode.
PEMROGRAMAN TERSTRUKTUR
Pemrograman Terstruktur
INSTRUKSI MASUKAN DAN KELUARAN
Pengantar Teknik Kompilasi
Situasi Saat Program Berjalan (Run-time Environment)
Bahasa Tingkat Tinggi.
Pendahuluan : Konsep memprogram, bahasa pemrograman dan komputer
Fungsi Lecture 7. Motivation Complexity of programming problem  more difficult to consider the solution as a whole  clue: dividing the problem into.
PERTEMUAN 7 Pemrograman Visual
PL/SQL PROGRAMMING PL/SQL adalah prosedur berkelanjutan dari Oracle -SQL yang menawarkan satu bentuk bahasa pemrograman. PL/SQL memungkinkan user atau.
FUNGSI Teknik Informatika Universitas Muhammadiyah Malang 2011 Pemrogramman Terstruktur.
Algorithm and Data Structures.
Fungsi Fungsi.
Pengantar Bahasa Rakitan
MATERI 3 PROSEDUR.
Pendahuluan Definisi :
Bahasa Mesin dan Assembly
By Adnan Purwanto, S.Kom.  Langkah-langkah yang kita lakukan dalam memberikan instruksi kepada komputer untuk memecahkan masalah  Manusia harus menggunakan.
Fitur Assembler yang Tidak Berorientasi Mesin Literal, Statement yang Mendefinisikan Simbol, Ekspresi, Blok Program, Control Sections dan Program Linking.
TEKNIK PEMROGRAMAN TERSTRUKTUR 1
PERANGKAT LUNAK (SOFTWARE)
Prosedur dan Makro.
Fungsi dan Prosedur.
Pengenalan Assembler.
Spesifikasi Perangkat Lunak
BAB IV Teknik Pemrograman
ALGORITMA & PEMROGRAMAN I-A
Dasar Algoritma dan pemrograman
Prosedur Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer
Stored Procedure Dengan Parameter
Pertemuan 3 (Bahasa Assembly)
Pemrograman Terstruktur
Istiqomah, S.Kom/Tekkom 2013
Struktur Program Pascal
BAB 1 BAHASA PEMROGRAMAN
SUBALGORITMA.
ALGORITMA & PEMROGRAMAN
Algoritme dan Pemrograman
Pengenalan Assembler.
Remainder Senin depan mulai UTS Praktikum
Latihan #0 Dengan menggunakan pernyataan looping WHILE dan jumlah instruksi sesedikit mungkin, tuliskan cuplikan program (bukan program lengkap, hanya.
Algoritme dan Pemrograman
Pemrograman Terstruktur
Teknik Optimasi.
ALGORITMA & PEMROGRAMAN 1A
CS1023 Pemrograman Komputer
ASSEMBLER #1 MK. PEMROGRAMAN SISTEM
ASSEMBLER #2 MK. PEMROGRAMAN SISTEM
Tipe data & Variabel 1. Aturan Leksikal. 2. Operator. 3. Statement
ASSEMBLER #3 MK. PEMROGRAMAN SISTEM
Pengantar Bahasa Rakitan
Prosedur dan Makro.
Tipe data & Variabel 1. Aturan Leksikal. 2. Operator. 3. Statement
Pengantar Bahasa Rakitan
Keterampilan komputer 1AB
Jump dan Call.
Dasar-dasar Pemrograman
Lecturer Note II Turbo Pascal & Pemrograman
Percabangan dalam VB6: GoTo, GoSub, Sub, Function
Pemrograman Terstruktur
Pengantar Bahasa Rakitan
Jump dan Call.
Prosedur Oleh : Tim Teaching Bernadus Anggo Seno Aji, S.Kom., M.Kom
Transcript presentasi:

Macro Processor Fungsi Dasar Fitur Berorientasi Mesin Pilihan Rancangan Contoh Implementasi

Instruksi macro Instruksi macro (macro) Contoh: 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.

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

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

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.

Contoh Definisi Macro Definisi Macro Macro tidak memiliki label

Contoh Definisi Macro Definisi macro Macro tidak memiliki label

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.

Contoh Invokasi Macro Invokasi macro

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.

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.

Contoh Ekspansi Macro

Contoh Ekspansi Macro .

Contoh Ekspansi Macro

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?

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

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

Contoh Definisi Macro Rekursif

Contoh Definisi Macro Rekursif

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.

Struktur Data DEFTAB (tabel definisi) NAMTAB ARGTAB 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

Algoritma Prosedur MAIN procedure Prosedur PROCESSLINE Prosedur DEFINE 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) Prosedur GETLINE Mendapatkan baris berikutnya yang akan diproses dari input file DEFTAB

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.

Algoritma

Algoritma