Реферат: Структура и реализация макроязыков - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Структура и реализация макроязыков

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 786 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

Москва , 1 Ноября 1995 г. Московский Госу дарственный Институ т Электроники и Математики кафедра САПР Ре фе рат Те ма III Раз ра бот ка об ще го про грам мно го обес пе че ния За да ние 3.2 Вы раз ра ба ты вае те мак ро язык для сис те мы . Обос нуй те эф фек тив ность ис поль зо ва ни я мак ро сред ств . Ка кие ти пы мак ро средств д о пус ка ют ся ва шим мак ро язы ком ? Сфор му ли руй те ме то ды по строе ния про грам мы , о б ра ба ты ваю ? щей мак ро язык Преподавате ль : Зайцева Л . В. Студент : Омельченко С . А. Разработ ка общего програмного обеспече ния . Реферат . стр 31 Московский Государственный Институт Электроники и Математики , 1995 МАК РО ЯЗЫК И МАК РО ПРО ЦЕС СОР Опе ра тор , ра бо таю щий в ка кой- л ?и бо сис те ме , час то встре ча ет ся с не об хо ди мо стью по вто рять не ко то рые по сле до ва тел ь но сти дей ст вий мно го раз ? Та ? кая по сле до ва тель но сть мо жет , на при мер , со сто ять из вво да не ко то рой тек сто в ой по сле до ва тель но ст и , на жа тии оп ре де лен ной по сл е до ва тель н ?о сти кла виш ? , вы пол не нии од но тип но го ря да ка ких- ли бо ари ф ме ти че ски ?х опе ра ций . В по доб ных слу ча ях час то мож но во ?с поль зо вать ся ап па ра том мак ро ко манд. Мак ро ко ман ды ( час то на зы вае мые м ак ро и ?ли мак рос ) яв ? ля ют ся од но строч н ы ми со кра ще н ия ми для груп пы ко манд . Ис поль зуя мак ро ко ман ду , про грам мист по су ще ст ву оп ре де ля ет од ну “ ко ман ду ? ” для пред став ле ния не ко то рой по сле до ва тель но ст и ко манд. Оп ре де ляя со от вет ст вую щие мак ро ко ман ды , опе ра тор мо жет удоб ным для се бя об ра зом вво дить свои соб ст вен ные сред ст ва бо лее вы со ко го уров ня , не за бо тясь о ст ?рук ту ре сис ? те мы . Он мо жет дос тиг нуть кра т ко сти и про сто ты управ ле ния сис те мой , не те ря я при этом ос нов ных преимуществ ис п оль зо ва ния ис ход ной сис те мы , та кой , как на при мер язык ас семб ле ра . Круп ные мак ро опе ра ции уп ро ща ют поль зо ва ние , от лад ку и мо ди фи ка цию про грамм , и об лег ча ют стан дар ти за цию . Мно гие раз ра бот чик вы чис ли тел ь ных ма шин ис поль зу ют мак ро ко ман ды для ав то ма ти за ции со став ле ния “ под хо дя щих ” опе ра ци он ных сис тем в ? про цес се , на зы вае мом г е не ра ци ей сис те мы МАК РО КО МА Н ДЫ В сво ей про стей шей фор ме мак ро ко ман да пред став ля ет со бой со кра ще ние для обо зна че ния по сле до ва тел ь но сти опе ра ций Рас смот рим сле дую щий на бор ко манд , взя тый из мак ро ? язы ка IDE для Borland C++ вер сии 3.1 (TEMC). Рас смот рим сле дую щую про грам му , на пи сан ную с по мо щью этих опе ра ций При мер 1 . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . В при ве ден ной про г рам ме по сле до ва тель но сть ко манд SetPrevPos; FixScreenPos; PageScre enUp; FixCursorPos; встре ча ет ся два ж ды. Ап па рат мак ро ко ман д по зво ля ет при сво ить этой по сле до ва тель но сти имя и ис поль зо вать это имя в ?ме сто нее . Мож но так же оп ре де лить не ко то рый мак ро язык , по зво ляю щий рас смат ри в ать дан ную кон ст рук ци ю , как оп ре де ле ние и в даль ней шем ис поль зо вать это оп ре де ле ние. Фак ти че ски , мак ро про цес сор пред став ля ет со бой отдел ьный язы ко в ой про цес со р со сво и ?м соб ст вен ным язы ком. Фор ма ты мак ро оп ре де ле ни й в раз лич ? ных сис те мах мо жет от ли чать ся друг о ?т дру га . В дан ном слу чае по сле до ва тел ь ность ко ма нд , оп ре де ляю щая мак ро ко ман ду име ет сл ?е дую щий фор ? мат MACRO ----------------- ----------------- ----------------- END; Псев до ко ма н да MACRO - пер ва ?я стро ка оп ре де ле ния - оп ре де ля ет сле дую щий з а ней иден ти фи ка тор , как имя мак ро ко ман ды . Вслед за этой стро кой рас по ла га ет ся по сле до ва тель ность ко манд , на зы вае мых “ те лом мак ро оп ре де ле ния ” . Оп ре де ле ние за кан чи ва ет ся стро кой с псев до ко ма н дой END . Ес ли мак ро ко ман да оп ре де ле на , то ис поль зо ва ние име ни со от вет ст вую щей мак ро ко ман ды в ка че ст ве мне мо ни ки ко да в про грам ме эк ви ва лент но ис поль зо ва нию со от вет ст вую щей по сле до ва тел ь но сти ко манд . Ес ли по вто ряю щей ся по сле до ва тел ь но сти ко манд дать имя “ MacPageUp ” , то наш при мер мож но бу ? дет пе ре пи сать сле дую щим об ра зом : Ис ход ный текст Рас ши ре ние ис ход но г о тек ста MACRO MacPageUp SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; END; . . . MacPageUp . . . MacPageUp . . . . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . В дан ном слу чае м ?ак ро про цес сор за ме ня ет ка ж дую мак ро ко ман ду ( мак ро вы зов ) стро ка ми : SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; Та кой про цесс за ме ны на зы ва ет ся рас ши ре ни ем мак ро ко ман ды . За ме тим , что са мо мак ро оп ре де ле ние не по ? яв ля ет ся в рас ши ре нии ис ход но го тек ста . Оп ре де ле ние со хра ня ет ся мак ро про цес со ром . Вхо ж де ние в ис ход ную про грам му име ни мак ро ко ман ды как мне м ?о ни ки опе ра ции на зы ва ет ся мак р о вы з о вом. ОПЕ РА ТО РЫ МАК РО КО МАНД Ап па рат мак ро ко ман д в том ви де , как он был опи сан до сих пор , по зво ля ет под став лят ь по сле до ва тель но ст и ко манд вме сто мак ро вы зо вов , при чем все об ра ще ния к мак ? ро оп ре де ле нию бу дут за ме не ны иден тич ны ми по сле до ва тель но стя м и ко манд . Та кой ап па рат не дос та точ но ги бок : в мак ро вы зо ве нет средств мо ди фи ци ро вать ко ды , ко то рые его за ме ? ня ют . Су ще ст вен ное рас ши ре ние воз мож но стей мак ро средств д ос ти га ет ся ? до бав ле ни ем опе ран дов ( па ра мет ров ) мак ро ко ман д. Рас смот рим сле дую щую про грам му : При мер 2: . . . SetPrevPos; MoveToMark(1); CenterFixScreenPos; . . . SetPrevPos; MoveToMark(2); CenterFixScreenPos; . . . В дан ном слу чае п ?о сле до ва т ель но сти ко манд очень по хо жи , но не аб с ?о лют но иден ? тич ны . В пер вой п ?о сле до ва т ель но сти ис поль зу ет ся опе ранд “ 1” , а во в ?то ром - опе ра ?нд “ 2” . Мож но счи тать , что они в ?ы пол ня ют од ну и ту же опе ? ра цию с пе ре мен ным па ра мет ром , или о ?пе ран дом . Та ? кой па ра метр на зы ва ют “ опе ран до м мак ро ко ман ды ” или “ фор маль ным па ра мет ром ” , и он обыч но объ яв ля ет ся в той же стро ке , где и имя мак ро са . В слу чае ра бо ты с язы ком мак ро ас семб ле ра , он обыч но по ме ча ет ся сим во лом &, что от ли ча ет его как сим вол м ?ак ро язы ка от сим во лов ас семб ле ра . В на шем слу чае , фир ма Бор ланд не пре ду смот ре ла в сво ем мак ро язы ке ра бо ты с мак ро опе ран да ми , од на ко мож но пред п о ло жить, что ес ли бы мак ро оп ре де ле ния в язы ке TEMC мог ли б ы об ра ба ты вать по доб ную си туа цию , то фор мат м ?ак ро оп ре д е ле ния мог бы вы гля ? деть сле дую ? щим об ра зом : MACRO () ----------------- ----------------- ----------------- END; где э то пе ре чис ле ние че рез за пя тую всех опе ран дов мак ро са. Пре ды ду щая про грам ма в та ком слу чае м ?о жет быть пе ре пи са на сле дую щим об ра зом : Ис ход ный текс т Рас ши ре ние ис ход но го тек ста MACRO MacGoto(labelno) SetPrevPos; MoveToMark(labelno); CenterFixScreenPos; END; . . . MacGoto(1) . . . MacGoto(2) . . . . . . SetPrevPos; MoveToMark(1); CenterFixScreenPos; . . . SetPrevPos; MoveToMark(2); CenterFixScreenPos; . . . Сле ду ет за ме тить , что мак ро ко ман да мо жет иметь и бо лее од но го опе ран да . Ка ж дый опе ранд дол жен при этом со от вет ст во вать фор маль но м у па ра мет ру в стро ? ке оп ре де ле ния име ни мак ро са. Рас смот рим сле дую щий при мер : При мер 3: . . . ScrollScreenDown; ScrollScreenLeft(0); FixCursorPos; . . . ScrollScreenUp; ScrollScreenLeft(1); FixCursorPos; . . . В дан ном слу чае о ?пе ран ды в ис ход ных по сле до ва тель но ст ях ко манд раз лич ны , как и ко ман ды . Эта про грам ма мо жет бы ?ть пе ре пи са на так : Ис ход ный текст Рас ши ре ние ис ход но го тек ста MACRO MacMove(cmd,left) cmd; ScrollScreenLeft(left); FixCursorPos; END; . . . MacMove(ScrollScreenDown,0) . . . MacMove(ScrollScreenUp,1) . . ScrollScreenDown; ScrollScreenLeft(0); FixCursorPos; . . . ScrollScreenUp; ScrollScreenLeft(1); FixCursorPos; . . . Сле ду ет от ме тить , что су ще ст ву ет два ос ? нов ных спо со ба за да ния опе ра н дов . Пер вый спо соб - по зи ци он ный по ка зан в вы ше стоя щем при ме ре . Су ще ст ву ет т ак же сп ?о соб ука за ния с при ? ме не ни ем клю ч е вых опе ран дов , ко ? то рый по зво ля ет об ра щать ся к фор мал ?ь ным опе ра то рам , как по име на ?м так и по по зи ции . Ссы ла яс ь на фор м ?аль ные опе р ?а то ры в оп ре де ле нии MacMove мож но так же ис поль зо вать сле дую щий вы зов : MacMove(cmd=ScrollScreenUp,left=1) УС ЛОВ НОЕ МАК РО РАС ШИ РЕ НИЕ Ино гда воз ни ка ют по треб но сти из ме нять по ря док команд мак ро рас ши ре ния внут ри мак ро са . Рас смот рим сле дую щую про грам му : При мер 4: . . . ScrollScreenLeft(1); LiteralChar('-'); . . . ScrollScreenDown; ScrollScreenLeft(2); LiteralChar('*'); . . . В этом пр ?и ме ре не толь ко п ?а ра мет ры , но и ко ли че ст во ко манд - пе ре мен ная ве ли чи на . Эта про грам ма мо же т быть за пи са на сле дую щим о б ра зом : . . . MACRO Mac1(p1,left,chr) IF p1==1 THEN ScrollScreenDown; ENDIF ScrollScreenLeft(2); LiteralChar('*'); END . . . Mac1(1,2, ’ -’ ) . . . Mac1(0,1, ’ * ’ ) . . . . . . ScrollScreenLeft(1); LiteralChar('-'); . . . ScrollScreenDown; ScrollScreenLeft(2); LiteralChar('*'); . . . Ком би на ция IF...THEN...ELSE яв ля ет ся ма к ро мет ка ми ? или сим во л ?а ми сле до ва ния и не по яв ля ют ся в вы ход ном тек сте мак ро про цес со ра . В мак ро язы ке так же мо гут быть пре ду смот ре ны псев до ко ман ды ус лов но го и без у с лов но го пе ре хо да на псев до- мет к у , с ко то рой мак ро про цес сор про дол жит об ра бот ку тек ста п ?ро грам мы . То ?ч но так же , как и в слу чае вы пол не ния про грам мы , опе ра то ры пе ре хо дов слу жат для у ?к а за ния вы пол не ния опе ра то ров про грам мы , опе ра то ры мак ро- пе ре хо дов слу жат для ука з ?а ния по ряд ка компиляции тек ста п ?ро грам мы . Эт ?о да ет в оз мож ность в про цес се рас ши ре ния по лу чать кон кре т ные ва ри ан ты по сле до ва тель но стей ко манд , со от вет ст вую щи е дан но му слу чаю п ?ри ме не ния мак ро ко ман ды . Вы пол не ние пе ре хо дов и про ве рок внут ри вы пол няе мо го ко да уве ли чи ва ет его ра ?з мер и в ре мя вы пол не ния , в то вре мя , как про вер ка и п ?е ре хо ды в мак ро сах про ис хо дят на ст ?а дии ком пи ля ции и по это му не тре бу ют за трат вре ме ни при вы по ?л не нии ко да . Эта во ?з мож ность и ?з би ра тель ной вы бор ки нуж ных ч ?ас тей тек ст ?а яв ля ет ся од ним из са мых ? мощ ных средств в си с тем ном про грам ми р о ва нии. МАК РО ВЫ ЗО ВЫ ВНУТ РИ МАК Р О ОП РЕ ДЕ ЛЕ НИЯ По сколь ку мак ро оп ре де ле ния яв ля ют ся , по су ти , “ со кра ще ния ми ” для по сле до ва тель но ст и ко манд , то по лез ным свой ст вом бы ла бы воз мо ?ж ность про и ?з во дить та кие “ со кра щ е ния ” внут ри са ми х мак ро оп ре де ле ний. При мер 5: . . . MACRO Mac1 SetPrevPos; CursorCharRight; END . . . MACRO Mac2 Mac1 Mac1 END . . . Внут ри мак ро оп ре де ле ния Mac2 дв а ж ды про ис хо дит ссыл ка на мак ро оп ре де ле ние Mac1 . Это по мог ло нам умень шить дли ну мак ро оп ре де ле ния Mac2 и сде ла ло его бо ле ?е лег ким для по ни ма ния . Та кое ис поль зо ва ние мак ро средств при во дит к мак ро рас ши ре ни ям на не сколь ких ур ов нях вло же н но сти , на при мер : Ис ход ный текст Р ас ши ре ние ис ход но го тек ста ( уро вень 1) Рас ши ре ние ис ход но го тек ста ( уро вень 2) . . . MACRO Mac1 SetPrevPos; CursorCharRight; END MACRO Mac2 Mac1 Mac1 END . . . Mac2 . . . MACRO Mac2 SetPrevPos; CursorCharRight; SetPrevPos; CursorCharRight; END Mac2 . . . SetPrevPos; CursorCharRight; SetPrevPos; CursorCharRight; . . . Мак ро вы зо вы , внут ри мак ро оп ре де ле ний мо гут вк ?лю чать не ск ?оль ко уров н ?ей . На при мер ? , ко ман да Mac2 мог ла бы быть вы пол не на внут ри дру го го мак ро оп ре де ле ния . Фак ти че ски , та кие сред ст ва , как мак ро- пе ре хо ды да ют воз мож ность лю бое чис ло ра ?з об ра щать ся к лю бо му мак ро оп ре де ле нию , и да же к са мо му се бе . Та кие вы зо вы на зы ва ю т ся ре кур сив ны ми. МАК РО ОП РЕ ДЕ ЛЕ НИЯ В МАК ? РО ОП РЕ ДЕ ЛЕ НИ ЯХ Мы рас смат ри ва ли мак ро ко ман ды , как об ?об щен ные со ? кра ще ния для по сле до ва тель но сти ко манд . Пред став ля ет ся ра зум ным раз р е шить ис пол ь зо ва ние в те ле ма к ро оп ре де ле ния лю бых до ? пус ти мых син так си со м пред ло же ний , в том ? чис ле и дру гие м ?ак ро оп ре д е ле ния. Не об хо ди мо , од на ко , по ни мать , что внут рен нее мак ро оп ре де ле ние не бу дет оп ? ре де ле но до тех пор , по ка не про из ?ой де т вы зов внеш не го мак ро са . Это - с лед ст вие ме то да реа ли за ции мак ро оп ре де ле ний . На при мер , пусть поль з о ва тель хо чет оп ре де лить груп пу мак ро оп ре де ле ний для о ?б ра ще ния к под про грам мам с по мо щью ка кой- то стан дар ти зи р о ван ной вы зы ваю щей по сле до ва тел ь но сти . При ве ден ный ни же при мер оп ре де ля ет мак ро ко ман ду DEFINE , ко то рая при у ?ка за нии в ка че ст ве ее опе ран да име ни под про грам мы оп ре де ля ет со от вет ст вую щий это му име ни мак рос . От дель ные ге не ри руе мые мак р о оп ре де ле ния по лу ча ют име на свя зан ных с ни ми под про грамм. При мер 6: . . . МАС RO DEFINE sub ....... ....... MACRO sub(param) ...... ...... sub(param) ...... ...... END ...... ...... END Поль зо ва тель мо жет об ра тить ся к это му ма ?к ро оп ре де ле нию сле дую щим об ра зом : DEFINE(cos) оп ре де ляя та ким об ? ра зом но вое мак ро оп ре де ле ние с име ? нем cos , к ко то ро му впо след ст в ии мож но об ра щать ся сле дую щим об ра зом : cos ( х ) и мак ро про цес сор с ге не ри ру ет ? со от вет ст вую щую по сле до ват ель ность вы зо ва функ ци и. РЕА ЛИ ЗА ЦИЯ Та ким об ра зом , на ми был оп ?и сан ва ри ант реа ли за ции мак ро язы ка . Рас смот рим ме тод реа ли за ции мак ро язы ка . В ка че ст ве при ме ра возь мем клас си че ский язык мак ро ас семб ле ра. ПО СТА НОВ КА ЗА ДА ЧИ Лю бой про цес сор мак ро ко манд дол жен ре шать сле дую щие че ты ре ос нов ные за да чи : 1. Рас по зна вать мак ро оп ре де ле ния . Про цес с ор мак ро ко м анд дол жен рас по зна вать мак ро оп ре де ле ния , вы де ляе мые со от вет ст вую щи ми псев до ко ма н да ми . В язы ке мак ро ас семб ле ра эти ми псев до опе ра то ра ми яв ля ют ся псев до ко ман ды MACRO и MEND. Эта за да ча мо жет быть ус л ?ож не на те м , что вну ?т ри мак ро оп ре де ле ний мо гут встре чать с я так же д ?ру гие мак ро ? оп ре де ле ния . Ко гда мак ро оп ре де ле ния вло ж е ны , ка ?к бы ло п ро де мон ст р ?и ро ва но вы ше , мак ро про цес со р дол жен пра виль но рас по зна ва ть вло же ния и со пос та вить на ча ло и ко нец мак ро са . Весь вло жен ный текст , вклю чая и дру ? гие мак ро оп ре де ле ния оп ре де ля ет от дель ную м ак ро ко ман д ?у. 2. За по ми нать мак ро оп ре де ле ния . Про цес с ор дол жен за пом нить оп ре де ле ния мак ро ко манд , к о то рые бу дут впо сл ед ст вии ис поль зо вать ся для рас ши ре ния мак ро вы зо вов 3. Рас по зна вать вы зо вы . Не об хо ди мо так же и рас по зна вать мак ро вы зо вы , пред став лен ные в ви де мне ? мо ни че ско го ко да опе ра ции . Это пред по ла га е т , что име на мак ро ко манд об ра ба ты ва ют ся на тех ? же са мы х ос но ва ни ях , как и один из ко дов опе ра ции. 4. Вы пол нять рас ши ре ние мак ро ко ман д и под ст ?а нов ку фак ти че ских па ра мет ров . Вме ст ?о фор маль ны ?х па ра мет ров мак ро оп ре де ле ния мак ро про цес сор дол жен под ста вить со от вет ст вую щие опе ран ды мак ро ко ман ды . Этот текст , в свою оч ?е редь мо жет ? со дер жать как мак р ?о ко ман ды так и мак ? ро оп ре де ле ния. Та ким об ра зом , мак ро про цес сор дол жен рас по зна ва ть и об ра ба ты вать мак ро оп ре де ле ния и мак ро ко ман ды. Что же ка ? са ет ся фор маль ных па ра мет ров , то тут нуж но при нять не скол ь ко ре ше ний . Не об хо ди мо оп ре де лить - мо гут ли они встре чать ся в ка че ст ве ко да о ?пе ра ции , ка ков син так сис до пус ти мых па ра мет ров . В раз ных реа ли за ци ях мак ро язы ков мо гут встре чать ся раз ные ва ри ан ты ме то ды реа ли за ции по доб ных си туа ций , по это му мож но толь ко дать не к ?о то рые ра зум ные ва ри ан ты , по кры ваю щие боль шую часть воз мо ж ных реа ли за ций . Фор маль ные па ра мет ры мо гут встре чать ся в мак ро оп ре де ле нии где угод но , в том чис ле и в ко ман де и в ко де опе ? ра ции . Мы хо тим , ч то бы бы ла обес пе че на воз мож ность кон ка те на ции фор маль ных па ра мет ров мак ро оп ре де ле ния с фик си ро ван ны ми сим воль ны ми стро ка ми . В та ком слу чае вста ет в ?о прос о не ко ем раз де ли тель но м сим во ле , обес пе чи ваю щем кон ка те на цию фор маль ных па ра мет ров и за дан ных поль зо ва те лем сим воль ных по сле до ва тель но ст ей . На при мер , ес ли из один из п ?а ра мет ров дол жен быть со еди нен с дру гим ? (macro[x,y] = xy), то воз мо жен син так сис x&y, что оз на ча ет кон ка те на цию фор маль но го па ра мет ра x с фор ма ль ным па ра мет ром y. Этот слу чай н ?е вы зы ва ет боль ших труд но стей . Го раз до слож ней об ра ба ты ва ет ся слу чай , ко гд а речь идет о под ста ? нов ке па ра мет ра внут ри сим воль ной стр о ки . В та ком слу чае воз мож ным вы хо дом бу дет ко ?н ка те на ци я по умол ча н ию дв ?ух по сле до ва тель но друг за д ?ру гом иду щи ?х сим воль ны ?х строк , а так же пр ?е об ра зо ва ние фор маль но го па ра мет ра , за клю чен но го в скоб ки ? к сим во ль ной стро к е . Та ким об ра зом , ес ли мы хо тим , что бы в мак ро се фи гу ри ро ва ла ст ро ка в ?и да “ blablabla[x]xxxxx” , где [x] долж но за ме нять ся фор маль ным па ра мет ром впол не в ?оз мож но за ме нить стро ку та ко го ви да с ?тро кой ти па ? “ blablabla” (x)” xxxxx” . На до за ме тить , что мно же ст во за ме ча тель ных идей по реа ли ? за ци и п о доб ных мак ро язы ков реа ли зо ва но в язы ке REXX, под дер жи вае мом на сис тем ном уров не опе ра ци он ной сис те мой OS/2 ком па нии IBM. Так же для вы пол не ния функ ций ус лов ных пе ре хо дов долж ны вы чис лять с я не ко то рые ариф ме ти че ские вы ра же ния ( возь мем в при мер хо тя бы обык но вен ных счет чик ). Та ким о б ра зом час то ока зы ва ет ся по лез ной во з мож ность и с поль зо ва н ?ия псев до- пе ? ре мен ных вре ме ни ком пи ля ции внут ри м ?ак ро сов. ДВУ ПРОС МОТ РО ВЫЙ АЛ ГО РИТМ Нач нем с не ко то рых уп ро щаю щих пред по ло же ний . Бу дем счи тать , что наш мак ро про цес сор функ цио наль но не за ви сим от ос нов но го ком пи ля то ра и его текст бу дет пе ре да вать ся это му ко ?м пи ля то ру . Сна ча ла не раз ре ? шим мак ро вы зо вы и мак ро оп ре де ле ния внут ри м ?ак ро оп ре д е ле ний. Мак ро про це с сор , как и язык ас ? семб ле ра , про смат ри в а ет и об ра ба ты ва ет стро ки тек ста . Но в язы к ?е все стро ки свя за ны ад ре са ци ей - од на стро ка мо жет сс ?ы лать ся на дру гую п ?ри по мо щи ад ре са или име ни , ко то рое долж но б ?ыть “ из вест но ” ас семб ле ру . Бо лее то го , ад рес присв аеваемый ка ж дой от дель ной стро ке за ви сит от со дер ? жи мо го , ко ли че ст ва и ад ре сов пред ше ст вую щих строк . Ес ли рас сма т ри вать мак ро оп ре де ле ние , как еди ный объ ект , то мож но ска зать , что стро ки н ?а ше го мак ро оп ре де ле ния не так силь но взаи мо свя за ны . Мак ро оп ре де ле ния не мо гут ссы лать ся на объ ек ? ты во вне это го ма ?к ро оп ре де ле ния . Пред по ло жим , что в те ле мак ро оп ре де ле ния есть стро ка INCR X, при чем пе ред этой ко м ?ан дой па ра метр Х по ? лу чил зна че ние 10. Мак ро про цес со р не про и ?з во дит син так си че ски й ана лиз , а про из во дит про ст ую тек сто ву ю под ста нов ку вме ст о “ Х ” по ?д став ля ет ся “ 10”. Наш ал го ритм бу дет вы пол нять 2 сис те ма ти че ских про смот ра вход но го тек ста . В пер вый п ?ро ход бу дут ? де тер ми ни ро ва ны все мак р ?о оп ре де ле ния , во вт ?о рой про ход ? бу дут о т кры ты все ссыл ки н ?а мак ро сы. Так же , как и язы ?к ас семб ле ра не мо жет вы пол нить ссыл ку на сим во ?л до то г о мо мен та , как он встре тит эт от сим вол , язык мак ро ко манд не мо жет вы ? пол нить рас ? ши ре ние до тех по ?р , по ка н е встре тит со от вет ст вую щее мак ро оп ре де ле ние . Во вре мя пе ?р во го про смот ра про ве ря ет ся ка ж дый код опе ра ции , мак ро оп ре де ле ния за по ми на ют ся в таб ли це мак ро оп ре де ле ний , а ко пия ис ход но го тек ста без м ?ак ро оп ре д е ле ний за по ми на ет ся во вне ?ш ней па мя ти , для ис ? поль зо ва н ия ее при вто ром п ?ро хо де . По ми мо таб ли цы мак ро оп ре де ле ний во вре мя пе ?р во го про хо да бу дет так же таб ли ца имен , во в ?то рой про хо ?д она бу дет ис поль з о вать ся для вы де ле ния мак ро оп е ра ций и рас ши ре ния их до ? тек ст а со от вет ст вую ще го мак ро оп ре де ле ния. ДАН НЫЕ ДЛЯ ПЕР ВО ГО ПРО СМОТ РА 1. ВХТ - Вход ной текст 2. ВЫХ 1 - Вы х од ная ко пия тек ста д ?ля ис поль зо ? ва ния во вто рой п ?ро ход. 3. МДТ - таб ли ца мак ро оп ре де ле ний , в ко то рой хра нят ся т е ? ла мак ро оп ре де ле ний 4. МНТ - таблица имен , не об хо ди мая для хра не ния имен мак ро ко ман д , оп ре де лен ных в МНТ 5. МДТС - счет чик для т ?аб ли цы МДТ 6. МНТС - счет чик для т ?аб ли цы МНТ 7. АЛА - мас сив спи ска па ра мет ров для под с ?та нов к и ин декс ных мар ке ров вме сто фор маль ных па ра мет ров , пе ред за по ми на ни ем оп ре де ле ния. ДАН НЫЕ ДЛЯ ВТО РО ГО ПРО СМОТ РА 1. ВЫХ 1 - Вы х од ная ко пия тек ста п ?о сле пер во го про хо да 2. ВЫХ 2 - Вы х од ная ко пия тек ста п ?о сле второ г ?о про хо да 3. МДТ - таб ли ца мак ро оп ре де ле ний , в ко то рой хра нят ся те ла мак ро оп ре де ле ний 4. МНТ - таблица имен , не об хо ди мая для хра не ния имен мак ро ко ман д , оп ре де лен ных в МНТ 5. МДТС - счет чик для т ?аб ли цы МДТ 6. МНТС - счет чик для т ?аб ли цы МНТ 7. АЛА - мас сив спи ска па ра мет ров для под с ?та нов ки ин декс ных мар ке ров вме сто фор маль ных па ра мет ров , пе ред за по ми на ни ем оп ре де ле ния. АЛГОРИТМ Ни же при ве де на фор маль ная за п ись со от вет ст вую щих ал го рит мов об ра бот ки мак ро оп ре де ле ний двух про смот ро вым спо со бом. Ка ж дый из ал го рит мов осу ще ст в ля ет по строч ный про смотр вход но го тек ста. ПЕР ВЫЙ ПРО СМОТР - МАК РО ОП РЕ ДЕ ЛЕ НИЯ : Ал го ритм пер во го про смот ра про ве ря ет ка ж дую стро ку вход но го тек ста . Ес ли она пред став ля ет со бой псев до опе р а цию MACRO, то все сле дую щие за не ?й стро ки за по ми на ют ся в бли жай ших сво бод ных ячей ках МДТ . Пер вая стро ка мак р о оп ре де ле н ия - это имя са мо го мак ро са . Имя за ? но сит ся в таблицу имен МНТ с ин дек сом этой стр о ки в МДТ ? . При этом про ис хо дит так же под ста нов ка но ме ров фор маль ных па ра мет ров , вме сто их имен . Ес ли в те че ние про смот ра встре ча ет с я ко ман да END, то это оз на ча ет , что весь текст об ра бо тан , и управ ле ние мож но пе ре да вать вто ро м у про смот ру для об ра ? бот ки мак ро ко манд. ВТО РОЙ ПРО СМОТР - РАС ШИ РЕ НИЕ МАК РО КО МАНД : Ал го ритм вто ро го про смот ра про ве ря ет мне мо ни че ский код ка ж до г о пред ло же ния . Ес ли это имя со дер жит ся в МНТ , то про ис хо дит об ра бот ка мак ро пред л о же ния по сле дую ще му пра ви лу : из таб ? ли цы МНТ бе рет ся ука за тель на на ча ло опи са ния мак ро са в МДТ . Макропроцессор го то вит м ас сив с ?пи ска АЛА со дер жа щий таб ли цу ин дек сов фор маль ных па ра мет ров и со от вет ст вую щих опе ран дов мак ро ко ман ды . Чте ние про из во дит ся из МДТ , по сле че го в про чи тан ную стро ку под став ля ют ся не об хо ди мые па ра мет ры , и п о лу чен ная та ким об ра зом стро ка з ?а пи сы ва ет ся в ВЫХТ ? 2. Ко гда в стре ча ет ся ди рек ти ва END, текст по лу чен но го ко да пе ре да ет ся для ком п ?и ля ции ас семб ле ру. Пер вый про смотр На ча ло ал го рит ма МДТС = 0 МНТС = 0 ФЛАГ ВЫХОД А = 0 цикл по ка ( ФЛАГ ВЫХОДА == 0) чтение следующ ей строки ВХ Т если !( операция MACRO) вывод строки в ВЫХТ 1 если ( операция END) ФЛАГ ВЫХОДА = 1 иначе чтение идентиф ?икатора запись имени и индекса в МНТ МНТС ++ приготов ить массив списка АЛА запись имени в МДТ МДТС ++ цикл чтение следую щей строки В ХТ подстановка и ндекса операторов добавление в МДТ МДТС ++ пока !( опера ?ция MEND) переход ко второму проходу конец алгоритма Второй просмотр Нач ало алгоритма ФЛАГ ВЫХОДА = 0 цикл пока ( ФЛАГ ВЫХОДА == 0) чтение строки из ВЫХТ 1 НАЙДЕНО = поиск кода в МНТ если !( НАЙДЕНО ) запись в ВЫХТ 2 строки если ( операция END) ФЛАГ ВЫХОДА = 1 иначе УКАЗАТ ЕЛЬ = индекс из МНТ Заполнение спи ?ска параметров АЛА цикл УКАЗАТЕЛЬ ++ чтение след . строки из МДТ подстановка п араметров вывод в ВЫХТ 2 пока !( опера ?ция MEND) переход к компиляции конец алгоритма ОДНОПРОСМОТР ОВЫЙ АЛГОРИТМ Предположим , что мы допускае м реализацию макроопределения внутри макроопр еделений . Основная проблема зд есь заключена в том , что ? внутреннее макро определено только посл е того , как выполнен вы зов внешнего . Для обеспечения использования внутреннего мак ро нам приде тся повторять как просмотр обработки м акроопределений , так ? и просмотр обработки м акрокоманд . Однако существует и еще одно решение , кот орое позволяет произвести расп ознавание и расширение в один просмотр. Рассмотрим анал огию с ассем блером . М акроопр еделение должно обрабатываться до обработки макрокоманд , пос кольку макро должны быть определены для процессора раньше , чем м акрокоманды обращен ия к ним . Однако , если мы наложим ограничение , что каждое макр оопределение должно быть опреде лено до того, как произой дет обращение к нему , мы ? устраним ос новное препятствие для однопро смотровой обработки . Заметим , что то же самое может быть верно и для сим ?волических имен в ассемблер е , но такое требование было бы неоп равданным ограничен ием для прог раммиста . В с лучае же макрорасширения может быть вполне естестве нно потребовать , чтобы объявлени я макро пред шествовали вызовам . Это не накладывает оче нь существенных ограничений на использование аппарата макрок оманд . Этот м еханизм даже не запрещает обращение м акро к са мому себе , поскольку обращ ение ведется в тот мом ?ент , когда им я макроса уж е определено . Расширение же макроса иде т не в процессе разбор а макроса , а в процессе последующего вызова. Предложенный ни же алгоритм объединяет два вышеприведенных алгоритма для двуп росмотрово го макроассемблера в один. АЛГОРИТМ Однопросмотровый макроассемблер Начало алгоритм а МТДС = 0 МНТС = 0 ФЛАГ ВЫХОДА = 0 цикл пока !( ФЛАГ ВЫХОДА ) чтение следующ ей строки ВХ Т НАЙДЕНО = поиск кода в МНТ если ( НАЙДЕНО ) МДИ = 1 УКАЗАТЕЛЬ = инде ?кс из МНТ Заполнение спи ?ска параметров АЛА цикл УКАЗАТЕЛЬ ++ чтение след . строки из МДТ подстановка п араметров вставка во ВХТ пока !( опера ?ция MEND) иначе если !( операция MACRO) вывод строки в ВЫХТ 1 если ( операция END) ФЛАГ ВЫХОДА = 1 иначе чтение идентиф ?икатора запись имени и индекса в МНТ МНТС ++ приготовить ма ?ссив списка АЛА запись имени в МДТ МДТС ++ цикл чтение следую щей строки В ХТ подстановка и н декса оператор ов добавление в МДТ МДТС ++ пока !( опера ?ция MEND) конец алгоритма ОПИСАНИЕ АЛГОРИ ТМА данный алгоритм является уп рощением алгоритма приведенного в [1], глава 4.3.2. Различие состои т в том , что современные средства ин теллектуализации программирования дают нам возможность осу ществлять вставки и удаления из крупных массивов с минимальными затратами проце ссорного времени , что было невозможно при использовании перфокарт . К роме того , ск орость работы современных про цессоров настолько велика , что позволяет п роизводить прямые вставки и удаления в массивах да нных средней величины ( скажем , до 64 килобайт ) в режиме реального в ремени . Таким образом , расшире ние исходного макроса может быть напрям ую вставлено в массив исходного текст а и обраб ?отано в расш иренном виде . Такая технологи я позволяет значительно упрости ть алгоритм обработки макроязык а. РЕАЛИЗАЦИЯ ВНУТРИ АССЕ МБЛЕРА Макропроцессор , описанный нами предназначался для обработки текста в режиме препроце ссора , то- есть он выпо л ?нял полный п росмотр входного текста , до того , как передать уп равление ассемблеру . Но макропро цессор также может быть реализован внут ри первого п рохода ассемблера . Такая реали зация позволяет исключить проме жуточные файлы , и позволяет достичь на порядок бол ь ?шей интеграции макропроцессора и ассемблера путем объед инения сходных функций . Наприме р , возможно о бъединение таблиц имен макрос ов и имен кода операц ии ; специальный признак может указывать н а то макро это или встроенная опер ация. Основные преиму щества вк лючени я макропроцессора в первый просмотр со стоят в след ующем : 1. Многие функции не надо реализ овывать дважды ( например , функци и ввода- вывода , проверки на тип , и. т. п .) 2. В процессе обрабо тки отпадает необходимость с оздавать промежуточ ные файлы ил и масс ивы данных. 3. У программиста по являются дополнител ьные возможности по совмещен ию средств а ссемблера ( например , команды EUQ) сов ?местно с мак рокомандами. Осно вные недостатки : 1. Про грамма должна требовать больш е оперативной памяти , что критично на некот орых ти ?пах ЭВМ , не имеющих мно го оперативной памяти. 2. Реализа ция подобного типа задачи может оказаться на порядок сложнее , чем отдельная р еализация ассемблер а и макропро цессора. Отде льно от расс мотрения реализации аппарата ма кросредств в ассемблер лежит рассмотрение дополнительного просмотра , испол ьзуемого многими программами для выявления определенных характеристик и сходной программы , таких как типы данных . Располагая таким макропроцессо ром , можно ис пользовать команды условной ко мпиляции , позволяющи ?е по ставить расширение макр окоманд в за висимость от определенных ха рактеристик програм мы. ВЫВ ОДЫ Макроязыки и соответствующие им макропро цессоры представляю т собой само стоятельную форму языков прог раммирования . При использовании вместе с ассемблером , мак ропроцессор явл яется для пр ограммиста полезным инструментом и по суще ?ству , позволяет ему самому определять свой язык “ вы со ко го ” уровня. Существуют четы ре основных задачи , решаемых макропроцессором : 1. Распозн авание макроопредел ений 2. Хранени е макро определе ний 3. Распозн авание макрокоманд 4. Расшире ние макрокоманд и подстановка параметров Макр опроцессор в ассемблере може т быть реали зован несколькими способами : 1. Независ имый двухпросмотров ый ассемблер 2. Независ имый однопросмотров ый ассемблер 3. Процесс ор , совмещенный с первым проходом станда ртного двухпросмотр ового ассемблера. ССЫЛКИ В работе над рефератом использовалась следующая литер атура : [1] Дж . Джор дан - “ Сис тем ное про грам ми ро ва ние ” [2] IBM OS/2 - “ REXX Programmer ’ s Refere nce” [3] Borland C++ - Included documentation and sources.
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Обозначила свой номер телефона у любимого в телефонной книге как "секс".
Теперь, если он пропустит мой звонок, то на экране будет написано "секс пропущен".
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Структура и реализация макроязыков", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru