Макроасемблер — компілятор мови програмування асемблера, об'єднаний з макропроцесором, та мова програмування, що підтримується таким компілятором. Широко застосовується в системах, що мають асемблер за основний засіб розробки, такі системи також включають розвинуті бібліотеки макросів.
Призначення
Використання мови програмування макроасемблера дозволяє скоротити час на розробку програми за рахунок зменшення її обсягу та підвищення наочності коду. Інструкції макроасеблера можуть використовуватись одночасно з інструкціями асемблера і в подальшому розгортаються в інструкції асемблера.
Макроасемблер мейнфреймів IBM
Ранні версії мейнфреймів компанії IBM — IBM/360 та IBM/370 — використовували асемблер як основний інструмент системного програмування та включали бібліотеки макросів для системного і прикладного програмування, а також засоби розробки макросів.
Приклад використання макроасемблера в ОС VM, в якій асемблер виступав як основний інструмент системного програмування. Код програми Hello world! на макроасеблері:
HELLO CSECT USING HELLO,15 SAVE (14,12) WTO 'HELLO, WORLD!' RETURN (14,12),RC=0 END
Програма містить наступні інструкції макроасемблера:
- SAVE — групове збереження регістрів процесора окрім R13, який містить адресу області збереження;
- WTO — вивід повідомлення на термінал (Write To Operator);
- RETURN — групове відновлення регістрів, встановлення коду завершення і повернення в основну програму.
Аналогічний код на асемблері (не цілком тотожний і зі збереженням одного макрооператора WTO):
HELLO CSECT The name of this program is 'HELLO' * Register 15 points here on entry from OPSYS or caller. STM 14,12,12(13) Save registers 14,15, and 0 thru 12 in caller's Save area LR 12,15 Set up base register with program's entry point address USING HELLO,12 Tell assembler which register we are using for pgm. base LA 15,SAVE Now Point at our own save area ST 15,8(13) Set forward chain ST 13,4(15) Set back chain LR 13,15 Set R13 to address of new save area * -end of housekeeping (similar for most programs) - WTO 'Hello World' Write To Operator (Operating System macro) * L 13,4(13) restore address to caller-provided save area XC 8(4,13),8(13) Clear forward chain LM 14,12,12(13) Restore registers as on entry DROP 12 The opposite of 'USING' SR 15,15 Set register 15 to 0 so that the return code (R15) is Zero BR 14 Return to caller * SAVE DS 18F Define 18 fullwords to save calling program registers END HELLO This is the end of the program
Макроасеблер MASM
Microsoft Macro Assembler надає можливості створення та використання макросів.
Приклад програми Hello world! на макроасемблері MASM:
include \masm32\include\masm32rt.inc .data HelloWorld db "Hello World!",13,10,0 .code start: invoke StdOut, addr HelloWorld invoke ExitProcess, 0 end start
Див. також
Примітки
- Hello world // MASM Forum
Посилання
- Ассемблер и макроассемблер [ 9 грудня 2019 у Wayback Machine.] (рос.)
Було запропоновано цю статтю або розділ з Асемблер, але, можливо, це варто додатково . Пропозиція з липня 2017. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Makroasembler kompilyator movi programuvannya asemblera ob yednanij z makroprocesorom ta mova programuvannya sho pidtrimuyetsya takim kompilyatorom Shiroko zastosovuyetsya v sistemah sho mayut asembler za osnovnij zasib rozrobki taki sistemi takozh vklyuchayut rozvinuti biblioteki makrosiv PriznachennyaVikoristannya movi programuvannya makroasemblera dozvolyaye skorotiti chas na rozrobku programi za rahunok zmenshennya yiyi obsyagu ta pidvishennya naochnosti kodu Instrukciyi makroaseblera mozhut vikoristovuvatis odnochasno z instrukciyami asemblera i v podalshomu rozgortayutsya v instrukciyi asemblera Makroasembler mejnfrejmiv IBMRanni versiyi mejnfrejmiv kompaniyi IBM IBM 360 ta IBM 370 vikoristovuvali asembler yak osnovnij instrument sistemnogo programuvannya ta vklyuchali biblioteki makrosiv dlya sistemnogo i prikladnogo programuvannya a takozh zasobi rozrobki makrosiv Priklad vikoristannya makroasemblera v OS VM v yakij asembler vistupav yak osnovnij instrument sistemnogo programuvannya Kod programi Hello world na makroasebleri HELLO CSECT USING HELLO 15 SAVE 14 12 WTO HELLO WORLD RETURN 14 12 RC 0 END Programa mistit nastupni instrukciyi makroasemblera SAVE grupove zberezhennya registriv procesora okrim R13 yakij mistit adresu oblasti zberezhennya WTO vivid povidomlennya na terminal Write To Operator RETURN grupove vidnovlennya registriv vstanovlennya kodu zavershennya i povernennya v osnovnu programu Analogichnij kod na asembleri ne cilkom totozhnij i zi zberezhennyam odnogo makrooperatora WTO HELLO CSECT The name of this program is HELLO Register 15 points here on entry from OPSYS or caller STM 14 12 12 13 Save registers 14 15 and 0 thru 12 in caller s Save area LR 12 15 Set up base register with program s entry point address USING HELLO 12 Tell assembler which register we are using for pgm base LA 15 SAVE Now Point at our own save area ST 15 8 13 Set forward chain ST 13 4 15 Set back chain LR 13 15 Set R13 to address of new save area end of housekeeping similar for most programs WTO Hello World Write To Operator Operating System macro L 13 4 13 restore address to caller provided save area XC 8 4 13 8 13 Clear forward chain LM 14 12 12 13 Restore registers as on entry DROP 12 The opposite of USING SR 15 15 Set register 15 to 0 so that the return code R15 is Zero BR 14 Return to caller SAVE DS 18F Define 18 fullwords to save calling program registers END HELLO This is the end of the programMakroasebler MASMMicrosoft Macro Assembler nadaye mozhlivosti stvorennya ta vikoristannya makrosiv Priklad programi Hello world na makroasembleri MASM include masm32 include masm32rt inc data HelloWorld db Hello World 13 10 0 code start invoke StdOut addr HelloWorld invoke ExitProcess 0 end startDiv takozhPreprocesorPrimitkiHello world MASM ForumPosilannyaAssembler i makroassembler 9 grudnya 2019 u Wayback Machine ros Bulo zaproponovano ob yednati cyu stattyu abo rozdil z Asembler ale mozhlivo ce varto dodatkovo obgovoriti Propoziciya z lipnya 2017