Самоучители для программиста

Недорого для детских садов: ростовые куклы для детского сада.

Системное программирование Конспект лекций


Preface
ПредисловиеНачиная читать 2-ю часть курса "Системное программирование" для нашей специальности, я обнаружил, что в Сети нет электронной литературы по первым темам курса. Поэтому я спешн...
Программы и программное обеспечение
Программы и программное обеспечение Определение (ГОСТ) Программа - это данные, предназначенные для управления конкретными компонентами системы обработки информации (СОИ) в целях реализации опреде...
Системное программирование
Системное программирование Определение (ГОСТ) Системная программа - программа, предназначенная для поддержания работоспособности СОИ или повышения эффективности ее использования. Определение (ГО...
Этапы подготовки программы
Этапы подготовки программыПри разработке программ, а тем более - сложных, используется принцип модульности, разбиения сложной программы на составные части, каждая из которых может подготавливаться...
Тема 2 Ассемблеры
Определение (не по ГОСТ) Язык Ассемблера - система записи программы с детализацией до отдельной машинной команды, позволяющая использовать мнемоническое обозначение команд и символическое задание...
Предложения языка Ассемблера
Предложения языка АссемблераПредложения языка Ассемблера описывают команды или псевдокоманды (директивы). Предложения-команды задают машинные команды вычислительной системы; обработка Ассемблером...
Операнды команд
Операнды команд. Константы - могут представлять непосредственные операнды или абсолютные адреса памяти. Применяются 10-ные, 8-ные, 16-ные, 2-ные, символьные константы. Непосредственные операнды -...
Директивы
ДирективыДирективы являются указаниями Ассемблеру о том, как проводить ассемблирование. Директив м.б. великое множество. В 1-ом приближении мы рассмотрим лишь несколько практически обязательных ди...
Структуры (базы) данных Ассемблера
Структуры (базы) данных Ассемблера...
Алгоритмы работы Ассемблеров
Алгоритмы работы Ассемблеров Ассемблер просматривает исходный программный модуль один или несколько раз. Наиболее распространенными являются двухпроходные Ассемблеры, выполняющие два просмотра исх...
Двухпроходный Ассемблер 1й проход
Двухпроходный Ассемблер - 1-й проход Алгоритм работы 1-го прохода двухпроходного Ассемблера показан на рисунке. Начало 1-го прохода ассемблирования. Начальные установки: установка в 0 счетчика адр...
Некоторые структуры данных 1го прохода
Некоторые структуры данных 1-го прохода Таблица команд содержит одну строку для каждой мнемоники машинной команды. Ниже приведен пример структуры такой таблицы для простого случая, когда мнемоника...
О структуре таблиц Ассемблера
О структуре таблиц Ассемблера Структура таблиц Ассемблера выбирается таким образом, чтобы обеспечить максимальную скорость поиска в них. Таблицы команд и директив являются постоянной базой данных....
Двухпроходный Ассемблер 2й проход
Двухпроходный Ассемблер - 2-й проходОбычно 2-й проход Ассемблера читает исходный модуль с самого начала и отчасти повторяет действия 1-го прохода (лексический разбор, распознавание команд и директ...
Некоторые дополнительные директивы
Некоторые дополнительные директивыOGRУстановка адреса. Операндом директивы является числовая константа или выражение, вычисляемое при ассемблировании. Как правило, Ассемблер считает, что первая яч...
Одно и многопроходный Ассемблер
Одно- и многопроходный АссемблерМы показали, что в двухпроходном Ассемблере на 1-ом проходе осуществляется определение имен, а на втором - генерация кода. Можно ли построить однопроходный Ассембле...
Основные понятия
Основные понятия Определение (не по ГОСТ) Макропроцессор - модуль системного ПО, позволяющий расширить возможности языка Ассемблера за счет предварительной обработки исходного текста программы....
Сравнение макросредств и подпрограмм
Сравнение макросредств и подпрограммИспользование макросредств во многом подобно использованию подпрограмм: в обоих случаях мы сокращаем запись исходного текста и создаем повторно используемые фра...
Некоторые возможности Макроязыка
Некоторые возможности МакроязыкаНиже мы описываем некоторые возможности макроязыка, в той или иной форме реализованные во всех Макропроцессорах. Мы, однако, ориентируемся прежде всего на Макропроц...
Заголовок макроопределения
Заголовок макроопределенияМакроопределение должно как-то выделяться в программе, поэтому оно всегда начинается с заголовка. Заголовок имеет формат, подобный следующему: имя_макрокоманды MACRO сп...
Окончание макроопределения
Окончание макроопределенияЕсли у макроопределения есть начало (оператор MACRO), то у него, естественно, должен быть и конец. Конец макроопределения определяется оператором MEND. Этот оператор не т...
Локальные переменные макроопределения
Локальные переменные макроопределенияПоскольку генерация макрорасширения ведется по некоторому алгоритму, описанному в макроопределении, реализация этого алгоритма может потребовать собственных пе...
Присваивание значений переменным макроопределения
Присваивание значений переменным макроопределенияПрисваивание может производиться оператором вида: имя_переменной SET выражение или имя_переменной = выражение Выражения, допустимые при присваи...
Глобальные переменные макроопределения
Глобальные переменные макроопределенияЗначения локальных переменных макроопределения сохраняются только при обработке данного конкретного макровызова. В некоторых случаях, однако, возникает необхо...
Уникальные метки
Уникальные меткиВ некоторых случаях операторы машинных команд, имеющихся в макроопределении, должны быть помечены, например, для того, чтобы передавать на них управление. Если применить для этих ц...
Оператор безусловного перехода и метки макроопределения
Оператор безусловного перехода и метки макроопределенияВозможный формат оператора: MGO макрометка Концептуально важным понятием является макрометка. Макрометка может стоять перед оператором Макр...
Оператор условного перехода
Оператор условного переходаВозможный формат оператора: MIF условное_выражение макрометка Если условное_выражение имеет значение "истина", обработка переходит на оператор, помеченный ма...
Условные блоки
Условные блоки Возможный формат оператора: IF условное_выражение операторы_макроопределения_блок1 ENDIF ELSE операторы_макроопределения_блок2 ENDIF Если условное_выражение имеет значение...
Операторы повторений
Операторы повторенийОператоры повторений Макроязыка (или директивы повторений языка Ассемблера) заставляют повторить блок операторов исходного текста, возможно, с модификациями в каждом повторении...
Выдача сообщения
Выдача сообщенияПри возникновении ошибок или ситуаций, требующих предупреждения программисту в листинг должно выводиться сообщение. Если в результате ошибки программиста, написавшего макроопределе...
Завершение обработки
Завершение обработкиОбработка макроопределения завершается при достижении оператора MEND. Однако, поскольку алгоритм обработки макроопределения может разветвляться, должна быть предусмотрена возмо...
Комментарии макроопределения
Комментарии макроопределенияЕсли в тексте макроопределения имеются комментарии, то они переходят в макрорасширение так же, как и операторы машинных команд и директив Ассемблера. Однако, должна быт...
Макрорасширения в листинге
Макрорасширения в листингеКак уже неоднократно говорилось, макрорасширения для Ассемблера неотличимы от программного текста, написанного программистом "своей рукой". Но программист, анал...
Структуры данных Макропроцессора
Структуры данных Макропроцессора Таблица макроопределений, строго говоря, не таблица, а просто массив строк, в который записываются тексты всех макроопределений (от оператора MACRO до оператора ME...
Алгоритм работы Макропроцессора
Алгоритм работы МакропроцессораОчевидно, что когда Макропроцессор обрабатывает макровызов, он уже должен "знать" макроопределение данной макрокоманды. Для обеспечения этого таблицы макро...
Алгоритм выполнения 1го прохода следующий
Алгоритм выполнения 1-го прохода следующий: 1-й проход Макропроцессора Инициализация: открытие исходного файла, создание пустых таблиц, признак "обработка макроопределения" устанавливае...
Алгоритм выполнения 2го прохода следующий
Алгоритм выполнения 2-го прохода следующий: 2-й проход макропроцессора Начальные установки: открытие файлов, создание пустых таблиц, etc. Признак режима обработки устанавливается в значение "...
Алгоритм обработки макровызова следующий
Алгоритм обработки макровызова следующий Обработка макровызова. На входе этого модуля есть номер элемента в Таблице имен макроопределений и разобранный текст оператора макровызова. Создание пустых...
Библиотеки макроопределений
Библиотеки макроопределенийМакровызовы к макроопределение, приведенному в исходном модуле, могут применяться только в этом же исходном модуле. Для того, чтобы можно было использовать макроопределе...
Вложенные макровызовы Вложенные макроопределения
Вложенные макровызовы. Вложенные макроопределения.Можно ли употреблять макроопределения внутри макроопределений? Можно ли употреблять макровызовы вызовы внутри макроопределений? Представленные выш...
Макроопределения внутри макроопределений
Макроопределения внутри макроопределенийЧестно говоря, необходимость в таких средствах сомнительна. Она может возникнуть при создании большого макроопределения, в котором есть повторяющиеся фрагме...
Макрокоманды внутри макроопределений
Макрокоманды внутри макроопределенийВ отличие от предыдущего, это средство может быть весьма полезным. Прежде всего - для часто употребляемых макрокоманд, могут быть включены в библиотеки макроопр...
Качественное расширение возможностей
Качественное расширение возможностей.Активное и грамотное применение макросредств может сделать работу программиста весьма продуктивной. Так, затратив определенные усилия на создание библиотеки ма...
Структурный Ассемблер
Структурный АссемблерВ виде макрокоманд могут быть реализованы операторы, близкие к операторам управления потоком вычисления в языках высокого уровня (условные операторы, ветвления, различные виды...
Объектноориентированный Ассемблер
Объектно-ориентированный АссемблерМакросредства могут обеспечить и реализацию свойств объектно-ориентированного программирования - в большей или меньшей степени. Простейшее расширение Ассемблера О...
Переносимый машинный язык
Переносимый машинный языкМакросредствами может быть обеспечен полнофункциональный набор команд некоторой виртуальной машины. Программа пишется на языке этой виртуальной машины. Для разных платформ...
Основные понятия
Основные понятия Определение (ГОСТ)Загрузчик - программа, которая подготавливает объектную программу к выполнению и инициирует ее выполнение. Более детально функции Загрузчика следующие: выделени...
Настраивающие Загрузчики
Настраивающие ЗагрузчикиНастраивающий Загрузчик является первым шагом в сторону усложнения от Абсолютного Загрузчика. Функции связывания и перемещения решаются в нем не самым эффективным, но прост...
Связывание в Настраивающем Загрузчике
Связывание в Настраивающем Загрузчике.Проблема связывания в Настраивающем Загрузчике решается при помощи Вектора Переходов. Вектор Переходов включается в состав объектного модуля и содержит список...
Перемещенне в Настраивающем Загрузчике
Перемещенне в Настраивающем Загрузчике.Принятые в Настраивающих Загрузчиках методы позволяют легко реализовать настройку реальных адресов, заданных относительно начала программы. Сущность метода п...
Непосредственно Связывающие Загрузчики
Непосредственно Связывающие ЗагрузчикиЭти Загрузчики называются непосредственно связывающими потому, что они обеспечивают обращение к внешней точке непосредственно, а не через косвенную адресацию....
Формат объектного модуля
Формат объектного модуляОбъектный модуль, поступающий на вход Загрузчика должен в той или иной форме содержать: размер модуля; машинные коды; входные точки (те адреса в модуле, к которым возможны...
Алгоритм работы Непосредственно Связывающего Загрузчика
Алгоритм работы Непосредственно Связывающего ЗагрузчикаНаиболее простой алгоритм работы Загрузчика - двухпроходный. На вход Загрузчика обязательно подается список объектных модулей, из которых сос...
Алгоритм выполнения 1го прохода следующий
Алгоритм выполнения 1-го прохода - следующий:1-й проход Загрузчика. Начальные установки. Создание пустой Глобальной таблицы. Стартовый адрес=пусто. Относительный адрес 1-го сегмента - 0. Размер пр...
Алгоритм выполнения 2го прохода следующий
Алгоритм выполнения 2-го прохода - следующий:2-й проход Загрузчика Установка на начало списка имен объектных модулей. Выборка следующего имени из списка объектных модулей. Если весь список объектн...
Тема 5 Кросссистемы
Исходная вычислительная система (ВС) - та ВС, на которой программа готовится к выполнению. Целевая ВС - та ВС, на которой программа выполняется. Эти две ВС не обязательно совпадают. Макропроцессор...
Модель регистров
Модель регистровМодель регистров включает в себя, как минимум: регистры общего назначения регистр-счетчик адреса регистр состояния Регистры моделируются переменными интерпретатора. РОН во время вы...
Модель оперативной памяти
Модель оперативной памятиОбъем адресного пространства памяти, к которому теоретически могут выполняться обращения к программе определяется разрядностью представления адреса. Однако, реально в целе...
Модель процессора
Модель процессораРабота процессора моделируется алгоритмом работы Интерпретатора. Основной алгоритм работы модели состоит из цикла, в каждой итерации которого моделируется выполнение одной команды...
Время
ВремяДля значительного класса встроенных ВС время выполнение программы является принципиально важной ее характеристикой (например, бортовые системы управления должны работать в реальном времени)....
Система прерываний
Система прерыванийЯвляется самым сложным для моделирования компонентом. Трудность состоит в том, что прерывания поступают асинхронно, без привязки к выполнению программы. Следовательно, прерывания...
Вводвывод
Ввод-выводОперации ввода-вывода целевой ВС моделируются файловым вводом-выводом исходной ВС. Данные, которые целевая ВС вводит с внешнее устройство, читаются моделью из файла. Данные, которые целе...
Взаимодействие с человекомоператором
Взаимодействие с человеком-операторомИнтерпретатор может выполняться в автоматическом или пошаговом режиме. В автоматическом режиме Интерпретатор моделирует выполнение команд программы без останов...








Начало