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

Реферат

Разработка общего ПО

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

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

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

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

Разработка общего программного обеспечения МАКРОЯЗЫК И МАКРОПРОЦЕС СОР Оператор , работающий в какой-либо системе , часто встречается с необ ходимостью повторять некоторые последовательности действий много раз ? Такая последовательность может , например , состоять из ввода некоторой текстовой последовательности , нажатии определ енной последовательности клавиш , выполнении однотипного ряда каких-либо арифметических опер аций . В подобных случаях часто можно воспо льзоваться аппаратом макрокоманд. Макрокоманды (часто называемые макро или макрос ) являются однострочными сокращен иями для группы команд . Используя макрок оманду , программист по существу определяет од ну “команду” для представления некоторой посл едовательности команд. Определяя соответствующие макрокоманды , опера тор может удобным для себя образом вводит ь свои собственные средств а более выс окого уровня , не заботясь о структуре сист емы . Он может достигнуть краткости и прост оты управления системой , не теряя при этом основных преимуществ использования исходной системы , такой , как например язык ассемблера . Крупные макрооперации упрощ а ют пол ьзование , отладку и модификацию программ , и облегчают стандартизацию . Многие разработчик вы числительных машин используют макрокоманды для автоматизации составления “подходящих” операционны х систем в процессе , называемом генерацией системы МАКРОКОМАНД Ы В своей простейшей форме макрокоманда представляет собой сокращение для обозначения последовательности операций Рассмотрим следующий набор команд , взятый из макроязыка IDE для Borland C++ версии 3.1 (TEMC). Рассмотрим следующую программу , написанную с по м ощью этих операций Пример 1 . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . SetPrevPos; FixScreenPos; PageScreenUp; FixCursorPos; . . . В приведенной программе последовательность команд SetPrevPos; FixScreenPos; PageS creenUp; 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,lef t=1) УСЛОВНОЕ МАКРОРАСШИРЕНИЕ Иногда возникают потребности изменять пор ядок команд макрорасширения внутри макроса . Рассмотрим следующую программу : Пример 4: . . . ScrollScreenLeft(1); LiteralChar('-'); . . . ScrollScreenDown; ScrollScreenLeft(2); LiteralChar('*'); . . . В этом примере не только параметры , но и количество команд - переменная величин а . Эта программа может быть записана следу ющим образом : . . . MACRO Mac1(p1,left,chr) IF p1==1 THEN ScrollScreenDown; ENDIF ScrollScreenLeft(2); Literal Char('*'); 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(х ) и макропроцессор сгенерирует соответствующую последовательность вызова функции. РЕАЛИЗАЦИЯ Таким образом , нами был описан вариант реализации макроязыка . Рассмотрим метод реал изации макроязыка . В качестве примера возьмем классический язык макроассемблера. ПОСТАНОВКА ЗАДАЧИ Любой процессор макрокоманд должен решать следующие четыре основные задач и : Распознавать макроопределен ия . Процессор макрокоманд должен распознавать макроопределения , выделяемые соответствующими псевдокомандами . В языке макро ассемблера этими псевдооператорами являются псев докоманды MACRO и MEND. Эта задача может быть усло жнена тем , что внутри макроопределений м огут встречаться также другие макроопределения . Когда макроопределения вложены , как было продем онстрировано выше , макропроцессор должен правильн о распознавать вложения и сопоставить начало и конец макроса . Весь вложенный т екст , включая и другие макроопределения опред еляет отдельную макрокоманду. Запоминать макроопределения . Процессор должен запом нить определения макрокоманд , которые будут в последствии использоваться для расширения макров ызовов Распознавать вызовы . Необходим о также и распознавать макровызовы , представленные в виде мнемонического кода операции . Это предполага ет , что имена макрокоманд обрабатываются на тех же самых основаниях , как и один из кодов операции. Выполнять расширение мак рокоманд и подстановку фактичес ких параме тров . Вместо формальных параметров макроопределения макропроцессор должен подставить соответствующие операнды макрокоманды . Этот текст , в свою очередь может соде ржать как макрокоманды так и макроопределения . Таким образом , макропроцессор должен р аспознавать и обрабатывать макроопределения и макрокоманды. Что же касается формальных параметров , то тут нужно принять несколько решений . Необходимо определить - могут ли они встреч аться в качестве кода операции , каков синт аксис допустимых параметров . В р азных реализациях макроязыков могут встречаться разные варианты методы реализации подобных ситуаций , поэтому можно только дать некоторые разу мные варианты , покрывающие большую часть возм ожных реализаций . Формальные параметры могут встречаться в макроопред е лении где угодно , в том числе и в команде и в коде операции . Мы хотим , чтобы была обеспечена возможность конкатенации формальных параметров макроопределения с фиксированными с имвольными строками . В таком случае встает вопрос о некоем разделительном символ е , обеспечивающем конкатенацию формальных пар аметров и заданных пользователем символьных п оследовательностей . Например , если из один из параметров должен быть соединен с другим (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 килобайт ) в режиме реального времени . Таким образом , расширение исходного макроса может быть напря мую вставлено в масси в исходного текста и обработано в расширенном виде . Такая технология позволяет значительно упростить алгоритм обработки макроязыка. РЕАЛИЗАЦИЯ ВНУТРИ АССЕМБЛЕРА Макропроцессор , описанный нами предназначался для обработки текста в режиме препроцесс ора , то-ес ть он выполнял полный просмо тр входного текста , до того , как передать управление ассемблеру . Но макропроцессор так же может быть реализован внутри первого п рохода ассемблера . Такая реализация позволяет исключить промежуточные файлы , и позволяет до стичь на п орядок большей интеграции макропроцессора и ассемблера путем объединен ия сходных функций . Например , возможно объедин ение таблиц имен макросов и имен кода операции ; специальный признак может указывать на то макро это или встроенная опера ция. Основные преиму щества включения макро процессора в первый просмотр состоят в сл едующем : Многие функции не надо реализовывать дважды (например , функции ввода-вывода , проверки на тип , и.т.п .) В процессе обработки отпадает необходимос ть создавать промежуточные файлы или масс ивы данных. У программиста появляются дополнительные возможности по совмещению средств ассемблера (например , команды EUQ) совместно с макрокомандами. Основные недостатки : Программа должна требовать больше опер ативной памяти , что критично на некоторых типа х ЭВМ , не имеющих много оперативно й памяти. Реализация подобного типа задачи может оказаться на порядок сложнее , чем отдельная реализация ассемблера и макропроцессора. Отдельно от рассмотрения реализации аппар ата макросредств в ассемблер лежит рассмотрен ие дополнительного просмотра , используемого многими программами для выявления определенных характеристик исходной программы , таких как типы данных . Располагая таким макропроцессором , можно использовать команды условной компиля ции , позволяющие поставить расш и рение макрокоманд в зависимость от определенных характеристик программы. ВЫВОДЫ Макроязыки и соответствую щие им макропроцессоры представляют собой сам остоятельную форму языков программирования . При использовании вместе с ассемблером , макропроцес сор являетс я для программиста полезным инструментом и по существу , позволяет ему самому определять свой язык “высокого” уро вня. Существуют четыре основных задачи , решаем ых макропроцессором : Распознавание макроопределений Хранение макроопределений Распознавание макрок оманд Расширение макрокоманд и подстановка пара метров Макропроцессор в ассемблере может быть реализован несколькими способами : Независимый двухпросмотровый ассемблер Независимый однопросмотровый ассемблер Процессор , совмещенный с первым проходом стандартно го двухпросмотрового ас семблера.
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