Самоучители для программиста
Active Sensors
Active Sensors(Активные датчики) содержит два списка: Available Sensors (Возможные датчики) слева и Current Sensors (Текущие датчики) справа. Кнопками Add (Добавить) и Remove (Удалить) можно скорректировать текущий набор применяемых датчиков, а кнопка Properties (Свойства) открывает доступ к настройке свойств датчиков. Флажок Smart Scan определяет приоритет операций при выполнении сканирования. Если флажок установлен, то работа датчиков оказывает минимальное воздействие на работу клавиатуры, мыши, дисков.
Advanced (Дополнительно) Окно
Advanced (Дополнительно). Окно разделено на две панели. На левой панели иерархическая структура представляет способ сортировки, который можно изменить с помощью раскрывающегося списка Sort by (Сортировка по):| · | Symptoms (По признаку); |
| · | Severity (По степени опасности); |
| · | Scanners (По датчикам). |
В последнем случае неисправности отображаются непосредственно в порядке тестирования.
Advanced
Advanced | На вкладке Advanced (Дополнительно) имеется группа элементов управления Test to Skip (Пропуск тестов). Skip CMOS Tests (Пропустить тест CMOS) - следует использовать в том случае, если Norton Disk Doctor неверно определяет параметры жесткого диска и фиксирует их отличие от данных CMOS. Only One Hard Disk (Только один жесткий диск) - следует использовать, если Norton Disk Doctor в системе с одним жестким диском обнаруживает более одного диска. Skip File Date & Time Tests (Пропустить проверку даты и времени создания файлов) - следует использовать при искусственном изменении показаний системных часов. Skip Partition Tests (Пропустить проверку таблиц разделов) - Norton Disk Doctor может фиксировать ошибки таблицы разделов в том случае, если разделы |
диска создавались не штатной программой fdisk.exe, а иной, например Partition Magic.
Skip Compression Testing (Пропустить проверку сжатых дисков) - этот режим может потребоваться, если для сжатия дисков использовалась не штатная системная программа DriveSpace, а какое-то иное средство.
Skip Host Drive Testing (Пропустить проверку несущего диска) - сокращает время проверки сжатого диска, но если на нем будут обнаружены ошибки, эту проверку надо подключить. Ремонт сжатого диска без соответствующего ремонта его несущего диска может привести к появлению новых ошибок.
Scan for Auto-Mount Disks (Автоматическое присоединение несущего диска). Допустим, вам надо проверить большое количество дискет, некоторые из которых сжаты, а некоторые - нет. В таком случае при переходах от одних дискет к другим может потребоваться выполнять операцию присоединения или отсоединения несущего диска, иначе может быть зафиксирована ошибка. Установка флажка приведет к тому, что эти операции будут происходить автоматически.
Norton Disk Doctor может выполнять проверку дисков в фоновом режиме. Это особенно актуально при проверке качества поверхности, которая занимает продолжительное время. Для этого надо запустить Norton Disk Doctor и начать проверку, щелкнув на кнопке Diagnose (Диагностика). Теперь можно свернуть окно программы и на панели индикации рядом с часами появится значок Norton Disk Doctor.
На вкладке Advanced в группе Background Operations (Фоновый режим) счетчиками Begin after... idle minutes, and ... seconds (Начинать через ... минут и ... секунд простоя) можно задать время простоя жесткого диска, по истечении которого происходит возобновление проверки в фоновом режиме.
В раскрывающемся списке When errors are found (Если найдены ошибки) можно выбрать сигнальные действия фонового режима:
| · | Sound a short alarm (короткий звуковой сигнал); |
| · | Flash taskbar area (Мигание Панели задач); |
| · | Sound alarm and flash taskbar (Звуковой сигнал и мигание Панели задач); |
| · | Display report window (Вывести окно отчета). |
Если при проверке в фоновом режиме ошибок не обнаружено, работа Norton Disk Doctor завершается без каких-либо сообщений.
Alarms
Alarms(Сигнализация) можно задать параметры всплывающих предупреждающих окон, появляющихся при достижении параметрами критических уровней. Раскрывающийся список содержит три категории предупреждений:
| · | Notice (Замечание); |
| · | Caution (Внимание); |
| · | Alert (Тревога). |
Для каждого из видов предупреждений можно задать свой режим отображения: Show Alarm Message On Top of All Windows (Отображать предупреждение поверх всех окон) или Show Alarm Message In The Background (Отображать предупреждение в фоновом режиме).
Алгоритм обработки макровызова следующий
Алгоритм обработки макровызова следующий
![]() |
|
Алгоритм работы Макропроцессора
Алгоритм работы МакропроцессораОчевидно, что когда Макропроцессор обрабатывает макровызов, он уже должен "знать" макроопределение данной макрокоманды. Для обеспечения этого таблицы макроопределений и имен макроопределений должны быть созданы до начала обработки макровызовов. Поэтому Макропроцессор должен состоять из двух проходов, на первом проходе строятся таблицы макроопределений и имен макроопределений, а на втором осуществляется обработка макровызовов. Если макроопределения сосредоточены в начале исходного модуля, то Макропроцессор может быть и однопроходным.
Ниже мы приводим алгоритм работы 2-проходного Макропроцессора, при этом мы исходим из следующих предпосылок:
Алгоритм работы Непосредственно Связывающего Загрузчика
Алгоритм работы Непосредственно Связывающего ЗагрузчикаНаиболее простой алгоритм работы Загрузчика - двухпроходный.
На вход Загрузчика обязательно подается список объектных модулей, из которых составляется программа. Этот список может быть параметром программы-Загрузчика или находиться в отдельном файле. На первом проходе Загрузчик просматривает все объектные модули по списку и решает 2 задачи:
Структура элемента Глобальной таблицы - такая же, как и Таблицы внешних символов каждого модуля. В нее заносятся только входные точки всех модулей. Поскольку Загрузчик уже знает в каком месте области памяти, выделяемой для программы, будет размещаться тот или иной модуль, он заносит в Глобальную таблицу адреса входных точек относительно начала всей программы.
В конце 1-го прохода Загрузчик выделяет память и, уже зная фактический начальный адрес программы в памяти корректирует все адреса в Глобальной таблице внешних символов.
На 2-ом проходе Загрузчик снова читает все объектные модули по списку. При этом он уже размещает коды модуля в памяти и формирует для каждого модуля Таблицу внешних символов (локальную для модуля) и Таблицу перемещений. Адресные поля в этих таблицах он заполняет или корректирует с учетом фактического адреса модуля в памяти и содержимого Глобальной таблицы внешних символов. Затем он выполняет обработку Таблицы перемещений, используя для коррекции адресных кодов в программе значения из Локальной Таблицы внешних символов.
Алгоритм выполнения 1го прохода следующий
Алгоритм выполнения 1-го прохода следующий:
![]() |
|
Алгоритм выполнения 2го прохода следующий
Алгоритм выполнения 2-го прохода следующий:
![]() |
|
Алгоритмы работы Ассемблеров
Алгоритмы работы АссемблеровАссемблер просматривает исходный программный модуль один или несколько раз. Наиболее распространенными являются двухпроходные Ассемблеры, выполняющие два просмотра исходного модуля. На первом проходе Ассемблер формирует таблицу символов модуля, а на втором - генерирует код программы
Appearance
AppearanceЭта вкладка содержит настройки оформления процесса проверки. Нам доступны следующие возможности:
| · | Enable Animation (Разрешить анимацию); |
| · | Play Music (Воспроизводить музыку); |
| · | Show custom message (Отображать заданное сообщение). |
·Ask Me First (Выдать запрос);
| · | Ask Me First (Выдать запрос); |
| · | Auto-Repair (Исправлять автоматически); |
| · | Skip Repairs (Пропустить); |
| · | Custom (Заказная настройка). |
At End
at End(Файлы в конце диска). На этой вкладке можно указать файлы, которые редко используются, например архивные. Они не нуждаются в быстром доступе и будут записаны в самый конец диска.
Battery Power (Заряд батареи)
Battery Power (Заряд батареи). Датчик показывает разряд батареи питания и используется на портативных компьютерах с автономным питанием.CPU Usage (Загрузка процессора). Датчик измеряет время, затрачиваемое процессором на выполнение команд, по отношению ко времени его простоя. Если загрузка процессора все время высока, это может означать, что неэффективно расходуются ресурсы или открыто слишком много приложений. Датчик помогает контролировать работу системы, диагностировать неполадки и анализировать работу конкретных приложений.
Open Files (Открытые файлы). Датчик контролирует количество файлов, открываемых в ходе работы приложений и процессов. В Windows нет ограничений на число одновременно открытых файлов (за исключением ограниченности ресурсов GDI и USER), но чем больше файлов открыто одновременно, тем более снижается быстродействие системы.
Rescue Disk (Аварийный комплект). Датчик следит за своевременностью обновления аварийного комплекта дискет. По истечении заданного промежутка времени или при изменении системных данных он может автоматически запускать программу Rescue для обновления аварийного комплекта.
Threads (Потоки). Новые 32-разрядные приложения и 32-разрядный сегмент самой операционной системы могут разбивать свое выполнение на отдельные потоки (подпроцессы). Длительная операция (например загрузка большого документа) разбивается на потоки, что позволяет в это же время выполнять и другие задачи. Большое количество одновременно работающих потоков приводит к повышенному потреблению ресурсов памяти и замедлению работы процессора.
WinDoctor (Проверка системы). Датчик использует программу Norton WinDoctor для периодической проверки системы на наличие типичных проблем. При их обнаружении датчик может выдать сигнал, либо предпринять действия по исправлению ситуации с помощью программы Norton WinDoctor.
Библиотеки макроопределений
Библиотеки макроопределенийМакровызовы к макроопределение, приведенному в исходном модуле, могут применяться только в этом же исходном модуле. Для того, чтобы можно было использовать макроопределение в разных исходных модулях, макроопределения помещаются в библиотеку макроопределений. Список библиотек макроопределений, которые используются для данного исходного модуля является параметром Макропроцессора.
Мы в нашей схеме алгоритма показали, что обращение к библиотекам макроопределений происходит на 2-ом проходе Макропроцессора - если мнемоника оператора не распознана ни как оператор языка Ассемблера, ни как макрокоманда, определенная в данном исходном модуле. Возможны, однако, и другие алгоритмы использования библиотек.
Один из таких алгоритмов следующий:
·Bookmarks (Закладки); ·Find Results
·| · | Find Results (Результаты поиска); |
| · | Undo (Отмена); |
| · | Tracker History (Журнал снимков). |
Панель инструментов содержит следующие кнопки:
| - Найти; |
| - Вырезать выделенное и поместить в буфер обмена; |
| - Копировать выделенное и поместить в буфер обмена; |
| - Вставить содержимое буфера обмена; |
| - Установить закладку; |
| - Удалить закладку; |
| - Режимы отображения панели значений. |
Далее рассмотрим некоторые практические задачи, которые можно выполнить с помощью программы Norton Registry Editor.
By Date
By Date(По датам). Поскольку Frequently (Часто) и Infrequently (Редко) - понятия относительные, на этой вкладке их можно конкретизировать, задав с помощью переключателя интервал времени, который будет использован при оценке регулярности открытия файлов: Day (День), Week (Неделя), Month (Месяц), Quarter (Квартал), Year (Год). Сортировку файлов по регулярности их открытия можно запретить, сбросив флажок Sort files by last access date (Сортировка файлов по дате открытия).
Cache Hits (Обращения в кэш) Датчик
Cache Hits (Обращения в кэш). Датчик показывает, сколько данных, необходимых программам, было получено из кэша, а не напрямую с диска. Событие "обращение в кэш" подразумевает, что кэш содержит необходимые данные, а "обращение мимо кэша" - что данные пришлось отыскивать на диске. Поскольку кэш-память использует область ОЗУ, доступ к ней осуществляется значительно быстрее, чем к диску.Cache Memory Utilization (Загрузка кэша). Датчик контролирует объем физической памяти (ОЗУ), занятый под дисковый кэш. Доступ к данным, хранящимся в ОЗУ, происходит значительно быстрее, чем к данным, хранящимся на диске, поэтому чем больше объем чем больше объем дискового кэша, тем выше производительность работы компьютера. Размер дискового кэша динамически изменяется системой Windows для достижения оптимального соотношения между потребностями системы и объемом оперативной памяти, установленной в компьютере.
Disk Throughput (Скорость обмена с диском). Датчик измеряет скорость, с которой компьютер обрабатывает запросы к данным, хранящимся на диске. Поскольку часть этих данных сохраняется в кэш-памяти диска, на результат оценки влияет и производительность оперативной памяти и свойства диска. Низкая скорость может быть вызвана большим количеством процессов, одновременно запрашивающих данные, или малым объемом кэш памяти.
Windows Performance Status (Статистика работы Windows). Это не отдельный датчик, а группа датчиков, предназначенных для интеграции со стандартной служебной программой Системный монитор, входящей в состав Windows. Для каждого контролируемого параметра может быть добавлен отдельный датчик. На вкладке Свойства датчика можно задать разные заголовки для большого и малого размеров датчиков.
Caution
| Среди пользователей часто можно встретить мнение, что Norton Utilites 2002 неправильно работает с локализованной версией Windows. Это выражается в том, что при проверке жесткого диска Norton Disk Doctor все русские имена файлов меняются на ??????. Чтобы избежать подобных проблем внимательно прочитайте этот раздел. Если при первой проверке диска программой Norton Disk Doctor обнаружатся ошибки, связанные с именами файлов, то НИ В КОЕМ СЛУЧАЕ не предпринимайте никаких мер по лечению! Пакет Norton Utilites 2002 корректно работает с любой локализованной версией операционной системы, в том числе и с русифицированной. Ключевая информация определяется по региональным настройкам, которые были выполнены при установке операционной системы на компьютер. Однако в силу различных причин эти настройки могут быть нарушены. Поэтому перед началом эксплуатации Norton Utilites 2002 необходимо проверить региональные установки и восстановить их в случае необходимости. Обязательно убедитесь, что строки в файле config.sys выглядят правильно: |
| device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1) |
| country=007,866,C:\WINDOWS\COMMAND\country.sys |
В файле autoexec.bat настройки должны быть такими:
| mode con codepage prepare=((866) C:\WINDOWS\COMMAND\ega3.cpi) |
| mode con codepage select=866 |
| keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys |
Кроме того, к региональным установкам относятся некоторые строки файла C:\Windows\win.ini в группе [int]:
| iCountry=7 |
| sCountry=Russia |
| sLanguage=rus |
Close
Очень внимательно отнеситесь к региональным настройкам операционной системы, так как пакет Norton Utilities 2002 использует их для своей работы. Если при первом запуске Norton Disk Doctor сообщает о том, что обнаружены ошибки в длинных именах файлов, не торопитесь их "исправлять", а прежде всего проверьте региональные установки в файлах config.sys, autoexec.bat, win.ini. Подробнее>> После установки пакета Norton Utilities 2002 создайте аварийный комплект дискет, чтобы можно было восстановить данные в аварийной ситуации. Потренируйтесь в запуске программ аварийного комплекта, не дожидаясь аварии - тогда вам легче будет преодолеть экстремальную ситуацию. Подробнее>> Настоятельно рекомендуется использовать программу Image, выполняющую сохранение образа жесткого диска при загрузке операционной системы. Много времени это не отнимает, зато помогает восстановить данные в самых безнадежных ситуациях, таких как форматирование жесткого диска в результате вирусной атаки. Подробнее>> Norton Utilities 2002 - мощный инструмент, требующий бережного обращения. Не спешите выполнять действия, смысл которых вам не вполне понятен. Действуйте только в том случае, если четко представляете, что делаете и с какой целью. |
Create Создание аварийного комплекта;
| Create - Создание аварийного комплекта; Update - Обновить; Options - Параметры; Show Details - Показать подробности |
Кнопка Create (Создать) служит для запуска процесса создания аварийного комплекта.
С помощью кнопки Update (Обновить) можно обновить комплект восстановительных утилит.
Настройки программы выполняются в окне Options, которое открывается после щелчка на кнопке Options(Параметры).
Это окно содержит две вкладки. На вкладке Rescue Files вы можете выбрать какие файлы будут включены в аварийный комплект. Вкладка Format Settings позволяет определить параметры форматирования дискет, на которые будут записаны необходимые файлы.
Процесс создания аварийного комплекта начинают щелчком на кнопке Create. Аварийный комплект состоит из трех дискет, которые желательно сразу же и подписать. Далее по запросам от программы надо вставлять дискеты в дисковод по очереди.
Программа создает аварийный комплект, состоящий из трех дискет. Рассмотрим их содержание подробнее.
Basic Rescue Boot Disk (Загрузочный диск).
Кроме ядра операционной системы, загружающейся в режиме MS-DOS, здесь находится вспомогательная оболочка Rescue Disk Shell (рисунок ниже) для запуска служебных программ, а также DOS-модуль программы Rescue для восстановления жесткого диска и необходимые для этого файлы данных (файлы cmosinfo.dat, bootinfo.dat, partinfo.dat).
NU Emergency Utilities Disk 1 (Аварийные программы, диск 1).
На этой дискете находятся DOS-модули программ: Norton Disk Doctor, UnErase, а также копии системных служебных программ: fdisk.exe, format.com, sys.com, attrib.exe, с помощью которых можно разбить жесткий диск на разделы и выполнить его форматирование.
NU Emergency Utilities Disk 2 (Аварийные программы, диск 2).
На этом диске находится программа UnFormat. Она позволит восстановить содержимое жесткого диска после форматирования с помощью образа диска, созданного программой Image. Здесь также присутствует редактор Disk Editor, предназначенный для просмотра и непосредственного редактирования содержимого секторов диска.
В конце операции будет предложено выполнить проверку комплекта, перезагрузив компьютер с загрузочного диска. После перезагрузки компьютера с использованием дискеты Basic Rescue Boot Disk мы увидим оболочку Rescue Disk Shell (рисунок ниже).
| Из этой оболочки можно запустить одну из служебных программ, выбрав ее курсорными клавишами: Rescue Recovery (Восстановление диска), Disk Doctor (Проверка диска), Norton UnErase (Восстановление удаленных файлов). В нижней части экрана имеется командная строка, в которой можно вводить прямые команды MS-DOS или параметры запуска программ. |
Data Files
Data Files(Файлы данных) позволяют кроме текстовых задать любые другие, изменения в которых требуется фиксировать. По умолчанию не заданы никакие файлы.
Датчики быстродействия
Датчики быстродействияДатчики дисков
Датчики дисковDisk Doctor (Проверка диска). Датчик периодически сканирует диск, проверяя его на наличие ошибок в таблице размещения файлов, наличие файлов с общими кластерами и "потерянных" кластеров. Красный сигнал указывает на наличие ошибок, желтый - на существование "потерянных" кластеров, зеленый - на отсутствие ошибок. При обнаружении ошибок датчик может автоматически запустить программу Norton Disk Doctor.
Disk Doctor Surface Test (Тест поверхности). В обычном режиме работы проверка поверхности диска монополизирует системные ресурсы, но этот датчик не создает помех другим системным операциям, поскольку использует время простоя жесткого диска. Если тест прервется обращением к диску, датчик возобновит его позднее с того места, где он был приостановлен. Индикатор датчика отражает процент выполнения текущего теста поверхности. При обнаружении неполадок возможен автоматический запуск программы Norton Disk Doctor.
Disk Health (Состояние диска). Датчик объединяет результаты проверок датчиков Disk Doctor (Проверка диска), Image (Образ диска) и Disk SMART Status (Статус SMART) и может одновременно использоваться для проверки одного или всех дисков. При обнаружении проблем датчик может запускать соответствующую программу Norton Utilities.
Disk Optimization (Фрагментация диска). Датчик можно настроить на показ либо фрагментированной, либо не фрагментированной доли диска. Один датчик может выполнять проверку одного или всех дисков. По результатам проверки возможен автоматический запуск программы Speed Disk. Датчики Disk Doctor (Проверка диска), Disk Health (Состояние диска) и Disk Optimization (Фрагментация диска) проверяют диск за один цикл опроса. Поэтому если для одного датчика изменить периодичность проверки, соответствующий параметр изменится и для двух других датчиков.
Disk Slack Space (Неполные кластеры). Очень часто данные файла занимают отведенный для них кластер не полностью. Такие кластеры называются неполными. Остающееся в них свободное пространство все равно считается занятым и не может быть выделено для других файлов. Наличие неполных кластеров приводит к тому, что часть дискового пространства не используется.
Disk SMART Status (Статус SMART). Технология самоконтроля SMART встречается во всех новых моделях жестких дисков. Она позволяет дискам самим контролировать свою работу и предсказывать большинство аппаратных сбоев до того, как они произойдут. Этот датчик действует только для дисков, имеющих встроенную функцию SMART.
Disk Space (Место на диске). С помощью датчика можно заранее узнать о нехватке свободного места на диске и предотвратить возникновение проблем при работе приложений, создании или копировании файлов. Можно вывести для каждого диска отдельный датчик, либо использовать один датчик для всех дисков.
Image (Образ диска). Датчик следит за регулярным сохранением образа диска служебной программой Image. Датчик может контролировать все жесткие диски или по отдельности. При превышении порогового интервала времени датчик может автоматически запускать программу Image.
Diagnose Начало проверки Options
Diagnose - Начало проверкиOptions - Параметры
Undo - Отмена ремонта
Help - Помощь
Close - Закрыть
Select drive(s) to diagnose - Выбор диска для проверки
Automatically fix errors - Автоматическое исправление ошибок
Следует иметь в виду, что параметр Автоматическое исправление ошибок имеет приоритет перед настройками параметров, заданными в диалоговом окне Options for Norton Disk Doctor. Это предназначено для начинающих и полностью исключает вмешательство в процесс поиска и устранения неисправностей. Директивы
ДирективыДирективы являются указаниями Ассемблеру о том, как проводить ассемблирование. Директив м.б. великое множество. В 1-ом приближении мы рассмотрим лишь несколько практически обязательных директивы (мнемоники директив везде - условные, в конкретных Ассемблерах те же по смыслу директивы могут иметь другие мнемоники).
| EQU | Определение имени. Перед этой директивой обязательно стоит имя. Операнд этой директивы определяет значение имени. Операндом может быть и выражение, вычисляемое при ассемблировании. Имя может определяться и через другое имя, определенное выше. Как правило, не допускается определение имени со ссылкой вперед. |
| DD | Определение данных. Выделяются ячейки памяти и в них записываются значения, определяемые операндом директивы. Перед директивой может стоять метка/имя. Как правило, одной директивой могут определяться несколько объектов данных. В конкретных Ассемблерах может существовать либо одна общая директива DD, тогда тип данных, размещаемых в памяти определяется формой записи операндов, либо несколько подобных директив - для разных типов данных. В отличие от других,, эта директива приводит непосредственной к генерации некоторого выходного кода - значений данных. |
| BSS | Резервирование памяти. Выделяются ячейки памяти, но значения в них не записываются. Объем выделяемой памяти определяется операндом директивы. Перед директивой может стоять метка/имя. |
| END | Конец программного модуля. Указание Ассемблеру на прекращение трансляции. Обычно в модуле, являющемся главным (main) операндом этой директивы является имя точки, на которую передается управление при начале выполнения программы. Во всех других модулях эта директива употребляется без операндов. |
Disks
Disks -Display
Display(Отображение) позволяет настроить оформление окна. Установка флажка Show Only Changed Files in Snapshot View (Показывать только измененные объекты) позволит частично скрыть лишнюю информацию и отображать только те объекты, которые были
изменены. Флажок Details (Подробно) позволяет отображать содержание измененных строк, а не только фиксировать наличие изменений. ФФлажокLegend (Условные обозначения) включает небольшую подсказку в нижней части окна с условными обозначениями.
На следующих вкладках заданы конкретные объекты, подлежащие сканированию.
Двухпроходный Ассемблер 1й проход
Двухпроходный Ассемблер - 1-й проходАлгоритм работы 1-го прохода двухпроходного Ассемблера показан на рисунке.
![]() |
|
Примечания
Двухпроходный Ассемблер 2й проход
Двухпроходный Ассемблер - 2-й проходОбычно 2-й проход Ассемблера читает исходный модуль с самого начала и отчасти повторяет действия 1-го прохода (лексический разбор, распознавание команд и директив, подсчет адресов). Это, однако, скорее дань традиции - с тех времен, когда в вычислительных системах ощущалась нехватка (или даже полное отсутствие) внешней памяти. В те далекие времена колода перфокарт или рулон перфоленты, содержащие текст модуля, вставлялись в устройство ввода повторно. В системах с эволюционным развитием сохраняются перфокарты и перфоленты (виртуальные), так что схема работы Ассемблера - та же. В новых системах Ассемблер может создавать промежуточный файл - результат 1-го прохода, который является входом для 2-го прохода. Каждому оператору исходного модуля соответствует одна запись промежуточного файла, и формат этой записи приблизительно такой:

Текст исходного оператора нужен только для печати листинга, Ассемблер на 2-ом проходе использует только первые 4 поля записи. Первое поле позволяет исключить строки, целиком состоящие из комментария. Второе поле позволяет избежать подсчета адресов, третье - поиска мнемоники в таблицах. Основная работа 2-го прохода состоит в разборе поля операндов и генерации объектного кода.
Некоторые общие соображения, касающиеся этой работы. Объектный код команды состоит из поля кода операции и одного или нескольких полей операндов. Код операции, как правило, имеет размер 1 байт, количество, формат и семантика полей операндом определяется для каждого типа команд данной аппаратной платформы. В общем случае операндом команды может быть:
Виды адресных выражений зависят от способов адресации вычислительной системы, некоторые (возможно, наиболее типовые) способы адресации:
Адресное выражение моет содержать арифметические операции, соображения, касающиеся арифметики в этом случае - те же, что и в адресной арифметике языка C.
Имена в адресных выражениях должны заменяться на значения. Замена абсолютных имен (определенных в директиве EQU) очень проста - значение имени из таблицы символов просто подставляется вместо имени. Перемещаемые имена (метки и имена переменных) превращаются Ассемблером в адресное выражение вида [базовый регистр]+смещение. В таблице символов значения этих имен определены как смещение соответствующих ячеек памяти относительно начала программы. При трансляции имен необходимо, чтобы:
Первые два требования обеспечиваются директивами, третье - машинными командами. Ответственность за то, чтобы при обеспечении этих требований директивы согласовывались с командами, лежит на программисте. Эти требования по-разному реализуются в разных вычислительных системах. Приведем два примера.
В Intel Ассемблер использует в качестве базовых сегментные регистры (DS при трансляции имен переменных, CS при трансляции меток). Для простой программы, состоящей из одной секции, Загрузчик перед выполнением заносит во все сегментные регистры сегментный адрес начала программы и Ассемблер считает все смещения относительно него. Сложная программа может состоять из нескольких секций, и в сегментном регистре может содержаться адрес той или иной секции, причем содержимое сегментного регистра может меняться в ходе выполнения программы. Загрузка в сегментный регистр адреса секции выполняется машинными командами: MOV AX,секция MOV сегментный_регистр,AX
Для того, чтобы Ассемблер знал, что адрес секции находится в сегментном_регистре, применяется директива: ASSUME сегментный_регистр:секция
Далее при трансляции имен Ассемблер превращает имена в адресные выражения вида [сегментный_регистр]+смещение в секции
Отмена использования сегментного регистра задается директивой: ASSUME сегментный_регистр:NOTHING
Обратим внимание на то, что при трансляции команды MOV AX,секция в поле операнда заносится относительный адрес секции, при выполнении же здесь должен быть ее абсолютный адрес. Поэтому поля операндов такого типа должны быть модифицированы Загрузчиком после размещения программы в оперативной памяти.
Более гибкая система базовой адресации применяется в S/360, S/370, S/390. В качестве базового может быть использован любой регистр общего назначения. Директива: USING относительный_адрес,регистр сообщает Ассемблеру, что он может использовать регистр в качестве базового, и в регистре содержится адрес - 1-й операнд. Чаще всего относительный_адрес кодируется как * (обозначение текущего значения счетчика адреса), это означает, что в регистре содержится адрес первой команды, следующей за директивой USING. Занесение адреса в базовый регистр выполняется машинной командой BALR. Обычный контекст определения базового регистра: BALR регистр,0 USING *,регистр С такими операндами команда BALR заносит в регистр адрес следующей за собой команды.
Зная смещение именованной ячейки относительно начала программы и смещение относительно начала же программы содержимого базового регистра, Ассемблер легко может вычислить смещение именованной ячейки относительно содержимого базового регистра.
В отличие от предыдущего примера, в этом случае не требуется модификации при загрузке, так как команда BALR заносит в регистр абсолютный адрес.
Директива DROP регистр отменяет использование регистра в качестве базового.
В качестве базовых могут быть назначены несколько регистров, Ассемблер сам выбирает, какой из них использовать в каждом случае.
Выше мы говорили, что Ассемблер "знает" базовый регистр и его содержимое. Это "знание хранится в таблице базовых регистров. Обычно таблица содержит строки для всех регистров, которые могут быть базовыми и признак, используется ли регистр в таком качестве. Формат строки таблицы:

Алгоритм выполнения 2-го прохода представлен на рисунке. Мы исходили из того, что 2-й проход использует промежуточный файл, сформированный 1-ым проходом. Если же 2-й проход использует исходный модуль, то алгоритм должен быть расширен лексическим разбором оператора, распознаванием мнемоники и подсчетом адресов - так же, как и в 1-ом проходе.
![]() |
|
При рассмотрении алгоритма мы принимали во внимание только генерацию объектных кодов, соответствующих командам и константам. Мы не рассматривали то, какова общая структура объектного модуля. Эти вопросы будут рассматриваться в Теме 4.
File>Backup Entire Registry
File>Backup Entire Registry (Файл>Резервировать весь реестр). Процесс может занять несколько минут, поэтому через пару секунд окно экспорта автоматически сворачивается и дальнейшая работа происходит в фоновом режиме. В результате создается текстовый файл с расширением .REG.Командой File>Export Registry File (Файл>Экспорт файла реестра) можно экспортировать в текстовый файл только выделенную ветвь. Команда File>Save Symantec Registry Archive (Файл>Сохранить в виде архива Symantec) сохраняет выбранную ветвь Реестра в двоичном файле с расширением .SRG.
Операцию импорта файлов выполняют командой File>Import Registry File (Файл>Импорт файла реестра) - для файлов .REG или командой File>Restore Key From Symantec Registry Archive (Восстановить раздел из архива Symantec) для файлов .SRG. Если происходит импорт данных в формате .REG, то поступающие данные заменяют имеющиеся. Если же импортируются данные в формате .SRG, то необходимо точно указать место назначения в структуре разделов, иначе импортируемые данные попадут не по адресу. Это свойство можно использовать для копирования целых ветвей Реестра в новое место.
Files (Файлы) Folders (Папки)
Files (Файлы), Folders (Папки), Free Space (Свободное пространство). В случае выбора файлов или папок в следующем окне будет предложено указать их с помощью кнопки Add to List (Добавить в список). В случае выбора свободного пространства потребуется указать диск.Далее переходим к следующему этапу, на котором предстоит выбрать метод стирания.
| Переключатель What wipe options do you want to use (Какие параметры использовать) позволяет выбрать два варианта. В положении Fast Wipe (Быстрое стирание) поверх удаляемого файла будет выполнена запись одинаковых байтов, конкретное значение которых вводится в поле Write once the value (Запись постоянного значения). В положении переключателя Government Wipe (Регламентированное стирание) предусмотрена особая 7-ступенчатая процедура, предусмотренная для правительственных органов США. В этом случае каждый бит данных на диске сначала обнуляется, затем устанавливается в "единицу". Эта процедура может повторяться многократно: в поле Number of times to repeat this (Число повторов перезаписи) можно ввести требуемую величину. |
Далее выполняется запись любого случайного числа от 0 до 255, которое задается в поле Then write once the value (Запись случайного значения). При этом предусмотрена обязательная проверка, гарантирующая выполнение записи. Процедура стирания данных может быть повторена многократно: число повторов для любого варианта задается в поле Times to perform this delete (Число повторов).
После задания всех этих параметров выдается информационное окно, в котором сведена вся введенная информация. Далее последует последнее предупреждение о предстоящем стирании. После этого выбранные вами данные будут безвозвратно уничтожены.
Files First
Files First(Первые файлы). На этой вкладке можно задать файлы, которые для ускорения доступа будут расположены ближе остальных к началу диска, независимо от прочих условий. Файлы задаются маской имени с использованием подстановочных символов.
Files Last
Files Last(Последние файлы). На этой вкладке можно вручную указать временные файлы или файлы, наиболее подверженные фрагментации по своей природе, чтобы они расположились последними (то есть в непосредственной близости к свободному месту). Это упростит последующую дефрагментацию. По умолчанию такими считаются файлы, хранящиеся в Корзине, временные файлы в папке Windows\Temp и некоторые другие.
Files
FilesFind disk problems
Find disk problems(Проверка диска)
При обнаружении ошибок жесткого диска в качестве средства ремонта может быть вызвана программа Norton Disk Doctor или стандартная служебная программа Проверка диска.
Find What (Что искать) Установка
Find What (Что искать).Установка флажка Match Whole String Only (Соответствие строки целиком) ограничивает условия поиска только полным соответствием строки, иначе будут найдены все объекты, для которых введенный текст является составной частью.
Раскрывающийся список Find Where (Где искать) позволяет ограничить область поиска только Реестром или только INI-файлами.
Вкладка Advanced (Дополнительно) определяет прочие условия поиска. При поиске в Реестре становится доступна группа элементов управления Look In (Искать в). Возможные варианты: All (Во всем Реестре), Selected Branch (В выделенной ветви) - имеется в виду ветвь, выделенная в главном окне программы. Для повторного поиска можно использовать раскрывающийся список. Возможен поиск в одном из четырех основных разделов. В группе Look At (Просматривать) можно уточнить зону поиска флажками:
| · | Key Names (Названия разделов); |
| · | Value Names (Названия параметров); |
| · | Value Data (Значения параметров). |
Поиск начинают щелчком на кнопке Find Now (Искать). Результаты поиска отображаются в информационной панели главного окна на вкладке Find Results (Результаты поиска). Каждая запись имеет свойства закладки - по двойному щелчку происходит быстрый переход к любому из найденных элементов.
Find Windows problem
Find Windows problem(Проверка Windows)
Проверка операционной системы является ядром программы Norton System Check - поэтому ее интерфейс столь похож на интерфейс Norton WinDoctor. Поэтому для получения подробных сведений об элементах управления и настройках программы перейдите в раздел Norton WinDoctor. Отличие заключается только в том, что нет возможности настроить средства контроля.
First_options
После завершения процесса установки часть программ из пакета Norton Utilites 2002 сразу же принимается за работу, поэтому прежде чем подробно рассматривать каждую из них, надо знать, как их отключить. В окне Интегратора нажмите на кнопку Options - откроется диалоговое окно Norton Utilites Options, в котором имеется шесть вкладок. Для первичной настройки программы проделайте операции описанные ниже. 1. Откройте вкладку General Settings (Общие установки). Сбросьте флажок Replace ScanDisk with Norton Disk Doctor (Заменить ScanDisk программой Norton Disk Doctor). Имеется в виду предварительное сканирование диска, которое происходит при нештатном завершении работы Windows). 2. На вкладке Startup Programs (Загрузка при старте Windows) сбросьте все флажки: Norton Disk Doctor (Проверка диска) и Norton System Doctor (Системный монитор). 3. На вкладке Recycle Bin (Корзина) переключатель Double-clicking item opens (По двойному щелчку открывать) установите в положение Standard Recycle Bin (Стандартная корзина). 4. На вкладке Norton Protection (Защита корзины) щелкните на кнопке Remove Norton Protection (Отключить защиту корзины). 5. Закройте окно Norton Utilites Options, щелкнув на кнопке ОК. Теперь можно закрыть программу и перезагрузить систему. С этого момента Norton Utilites никак не будут вмешиваться и нарушать привычный ход событий, и можно начать постепенное знакомство с отдельными компонентами. |
Folders
Folders(Папки) отображает папки, содержимое которых должно контролироваться. По умолчанию здесь заданы папки \Windows и \Windows\System.
Формат объектного модуля
Формат объектного модуляОбъектный модуль, поступающий на вход Загрузчика должен в той или иной форме содержать:
Один из вариантов организации объектного модуля описывается ниже.
Объектный модуль состоит из записей четырех типов. В каждой записи первый байт содержит идентификатор типа записи, следующие 2 байта - размер записи. Количество и формат следующих байтов записи определяется ее типом.
Кодовая запись содержит адрес относительно начала модулей и коды программы. Кодовые записи строятся Ассемблером при генерации объектного кода - кодов команд и директив типа DC. Каждая кодовая запись начинается с адреса (относительно начала модуля), с которого начинается размещение ее содержимого. Разрывы в линейном пространстве адресов могут быть обусловлены директивами выделения памяти без записи в нее значений (директивы типа BSS) или разрывами, управляемыми программистом (директивы типа ORG).
Запись связываний содержит один или несколько элементов Таблицы внешних символов. Элемент Таблицы внешних символов имеет следующий формат:

Ассемблер формирует новые элементы Таблицы перемещений при обработке директив типа SEGMENT, ENT, EXT.
Запись перемещений содержит один или несколько элементов Таблицы перемещений. Каждый элемент этой таблицы описывает один элемент кода программы, требующий настройки, зависящей от адреса загрузки программы в память и имеет следующий формат:

Относительный адрес и длина - адрес и длина того кода, который должен быть модифицирован. Имя символа - имя из Таблицы внешних символов, которое прибавляется к значению кода или вычитается из него. Бит операции - признак операции сложения или вычитания. Ассемблер генерирует элемент Таблицы перемещений, когда обрабатывает адресные выражения. Адресное выражение может быть абсолютным (независящими от адреса загрузки) или перемещаемым (зависящими от адреса загрузки) . Элементы Таблицы перемещений генерируются только для перемещаемых выражений. Рассмотрим адресное выражение:
ADDR1 - ADDR2
Запись окончания формируется Ассемблером при обработке директивы END, она содержит стартовый адрес программы. Естественно, эта запись должна быть заполнена только в одном из объектных модулей, составляющих программу.
Функционально программа Norton
Функционально программа Norton Registry Editor аналогична стандартной программе RegEdit (Редактор реестра), но имеет дополнительные функции, позволяющие сделать редактирование более удобным и безопасным.
Главное окно By File (Отображение
Главное окно | - By File (Отображение по объектам); - By Snapshot (Отображение по снимкам); - Compare (Сравнение); - Quick Fix (Быстрое исправление); - Restore (Восстановление); - Settings (Настройки). |
Выполнить снимок вручную можно в любой момент с помощью команды File>New Snapshot (Файл>Новый снимок). Такие снимки в регистрационном журнале называются ручными снимками (Manual Snapshot), хотя по запросу можно ввести им произвольное название. Командой Options>Reset Snapshot Log (Параметры>Очистить журнал снимков) можно удалить все записи из журнала.
При отслеживании часто меняющихся объектов, таких как динамические ключи Реестра, возникает огромное количество снимков. Подобные объекты не рекомендуется отслеживать - следует ввести их в список исключений. Для этого нужно найти в журнале снимков требуемый объект, щелкнуть на нем правой кнопкой мыши и в контекстном меню выбрать команду Exclude from tracking (Отключить отслеживание).
При необходимости можно восстановить предыдущее состояние системы, например, предшествующее установке нового приложения. Щелчок на кнопке Quick Fix (Быстрое восстановление) восстанавливает состояние системы на момент предыдущего снимка. Кнопкой Restore (Восстановить) можно восстановить состояние системы на основе любого из снимков, сделанных ранее. Операция восстановления занимает довольно продолжительное время. По ее окончании выполняется новый снимок, называемый Snapshot after Restore (Снимок после восстановления), в котором зафиксированы обратные изменения. Они касаются только контролируемых системных объектов и не затрагивают программные папки и файлы, созданные в ходе установки нового приложения.
Глобальные переменные макроопределения
Глобальные переменные макроопределенияЗначения локальных переменных макроопределения сохраняются только при обработке данного конкретного макровызова. В некоторых случаях, однако, возникает необходимость, чтобы значение переменной макроопределения было запомнено Макропроцессором и использовано при следующей появлении той же макрокоманды в данном модуле. Для этого могут быть введены глобальные переменные макроопределения (в сильносвязанных Макропроцессорах в них опять-таки нет необходимости).
Объявление глобальной переменной макроопределения может иметь, например, вид: имя_переменной GLBL начальное_значение (последнее необязательно)
Присваивание значений глобальным переменным макроопределения выполняется так же, как и локальным.
History В этом окне можно выделить
History. В этом окне можно выделить одну или несколько неисправностей и отменить их исправление с помощью контекстного меню. Для этого необходимо выбрать в контекстном меню команду Undo. Эту же операцию можно выполнить с помощью одноименной кнопки на панели инструментов.Настроить режим хранения данных об исправлениях можно с помощью окна Options.
History)
History)Независимо от способа устранения неисправностей ведется журнал ремонта. Просмотреть его можно с помощью кнопки
Improve performance
Improve performance(Повышение производительности)
Повышение производительности сводится к контролю за фрагментацией системного жесткого диска. В случае необходимости может быть вызвана программа Norton Speed Disk или стандартная служебная программа Дефрагментация диска.
Информационные датчики
Информационные датчикиCurrent Date and Time (Текущие дата и время). Датчик всегда выдает данные в календарном формате.
Norton Utilities Live Update (Обновление Norton Utilities). Датчик напоминает о том, что пора проверить, не появились ли новые версии пакета Norton Utilities. Он может запустить программу LiveUpdate, которая подгружает обновленные версии Norton Utilities с сервера Symantec.
Norton Protected Files (Защищенные файлы). Датчик показывает количество файлов, находящихся в данный момент под защитой Norton Protection.
Windows Up Time (Время работы Windows). Датчик показывает время, прошедшее с момента последнего запуска Windows. Этот датчик всегда выдает данные в календарном формате.
Information
Information -Internet/Network
Internet/Network -Использование контекстного меню датчика
Использование контекстного меню датчикаПри щелчке правой кнопкой по датчику появляется контекстное меню, которое дает доступ к элементам управления и настойки датчиков.
| Properties - Свойства датчика Update - Обновить Reset - Сброс Remove - Удалить датчик Sensor Information - Информация о датчике Sensor History Window - Журнал датчика Open ... - Открытие приложения, связанного с работой датчика What's This? - Получение справки о датчике Add Sensor - Добавить датчик File - Команды для работы с текущей конфигурацией датчиков View - Настройка внешнего вида программы Utilites - Запуск программ, входящих в Norton Utilites 2002 Close - Выход из программы |
Рассмотрим некоторые из этих команд подробнее.
Команда Properties (Свойства)
После щелчка по этому пункту контекстного меню откроется диалоговое окно Properties for ... (Свойства для...). Для разных датчиков вид окна (число вкладок и перечень элементов управления) может различаться.
| Обычно окно содержит три вкладки. |
Изменение файлов конфигурации
Изменение файлов конфигурацииКроме системного реестра редактор Norton Registry Editor позволяет контролировать и изменять системные файлы конфигурации .INI. К трем основным файлам, изначально присутствующим в структуре разделов (control.ini, system.ini, win.ini), можно добавить другие с помощью команды File>Load INI File (Файл>Загрузить INI-файл). Выбранный файл появится в структуре разделов. Обратная операция происходит по команде File>Unload INI File (Файл>Выгрузить INI-файл). Порядок работы с файлами конфигурации тот же, что и с разделами, и с параметрами Реестра.
Элементы управления
Элементы управленияЭта программа предназначена для
Эта программа предназначена для сравнения файлов, имеющих текстовый формат. Она предназначена, в первую очередь, для работы с файлами конфигурации и файлами Реестра, представленными в формате .REG. Программу Norton File Compare можно использовать совместно с программой Norton Registry Tracker для отслеживания и отмены изменений в системных файлах и настройках Реестра Windows.
Эта служебная программа предназначена
Эта служебная программа предназначена для выполнения необходимых мер по оптимизации быстродействия компьютерной системы простыми средствами. Процесс проходит под управлением Мастера и состоит из нескольких этапов.
Этапы подготовки программы
Этапы подготовки программыПри разработке программ, а тем более - сложных, используется принцип модульности, разбиения сложной программы на составные части, каждая из которых может подготавливаться отдельно. Модульность является основным инструментом структурирования программного изделия, облегчающим его разработку, отладку и сопровождение.
| Определение (ГОСТ) | Программный модуль - программа или функционально завершенный фрагмент программы, предназначенный для хранения, трансляции, объединения с другими программными модулями и загрузки в оперативную память. |
При выборе модульной структуры должны учитываться следующие основные соображения:
На рисунке показаны этапы, которые проходит программа от своего написания до выполнения

Программа пишется в виде исходного модуля, на рисунке - файл ИМ.
| Определение (ГОСТ) | Исходный модуль - программный модуль на исходном языке, обрабатываемый транслятором и представляемый для него как целое, достаточное для проведения трансляции. |
Первым (не для всех языков программирования обязательным) этапом подготовки программы является обработка ее Макропроцессором (или Препроцессором). Макропроцессор обрабатывает текст программы и на выходе его получается новая редакция текста (на рис. - ИМ'). В большинстве систем программирования Макропроцессор совмещен с транслятором, и для программиста его работа и промежуточный ИМ' "не видны". Следует иметь в виду, что Макропроцессор выполняет обработку текста, это означает, с одной стороны, что он "не понимает" операторов языка программирования и "не знает" переменных программы, с другой, что все операторы и переменные Макроязыка (тех выражений в программе, которые адресованы Макропроцессору) в промежуточном ИМ' уже отсутствуют и для дальнейших этапов обработки "не видны". Так, если Макропроцессор заменил в программе некоторый текст A на текст B, то транслятор уже видит только текст B, и не знает, был этот текст написан программистом "своей рукой" или подставлен Макропроцессором.
Следующим этапом является трансляция.
| Определение (ГОСТ) | Трансляция - преобразование программы, представленной на одном языке программирования, в программу на другом языке программирования, в определенном смысле равносильную первой. |
Как правило, выходным языком транслятора является машинный язык целевой вычислительной системы. (Целевая ВС - та ВС, на которой программа будет выполняться.)
| Определение (ГОСТ) | Машинный язык - язык программирования, предназначенный для представления программы в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации. |
Трансляторы - общее название для программ, осуществляющих трансляцию. Они подразделяются на Ассемблеры и Компиляторы - в зависимости от исходного языка программы, которую они обрабатывают. Ассемблеры работают с Автокодами или языками Ассемблера, Компиляторы - с языками высокого уровня.
| Определение (ГОСТ) | Автокод - символьный язык программирования, предложения которого по своей структуре в основном подобны командам и обрабатываемым данным конкретного машинного языка. |
| Определение (ГОСТ) | Язык Ассемблера - язык программирования, который представляет собой символьную форму машинного языка с рядом возможностей, характерных для языка высокого уровня (обычно включает в себя макросредства). |
| Определение (ГОСТ) | Язык высокого уровня - язык программирования, понятия и структура которого удобны для восприятия человеком. |
| Определение (ГОСТ) | Объектный модуль - программный модуль, получаемый в результате трансляции исходного модуля. |
Поскольку результатом трансляции является модуль на языке, близком к машинному, в нем уже не остается признаков того, на каком исходном языке был написан программный модуль. Это создает принципиальную возможность создавать программы из модулей, написанных на разных языках. Специфика исходного языка, однако, может сказываться на физическом представлении базовых типов данных, способах обращения к процедурам/функциям и т.п. Для совместимости разноязыковых модулей должны выдерживаться общие соглашения.
Большая часть объектного модуля - команды и данные машинного языка именно в той форме, в какой они будут существовать во время выполнения программы. Однако, программа в общем случае состоит из многих модулей. Поскольку транслятор обрабатывает только один конкретный модуль, он не может должным образом обработать те части этого модуля, в которых запрограммированы обращения к данным или процедурам, определенным в другом модуле. Такие обращения называются внешними ссылками. Те места в объектном модуле, где содержатся внешние ссылки, транслируются в некоторую промежуточную форму, подлежащую дальнейшей обработке. Говорят, что объектный модуль представляет собой программу на машинном языке с неразрешенными внешними ссылками.
Разрешение внешних ссылок выполняется на следующем этапе подготовки, который обеспечивается Редактором Связей (Компоновщиком). Редактор Связей соединяет вместе все объектные модули, входящие в программу. Поскольку Редактор Связей "видит" уже все компоненты программы, он имеет возможность обработать те места в объектных модулях, которые содержат внешние ссылки. Результатом работы Редактора Связей является загрузочный модуль.
| Определение (ГОСТ) | Загрузочный модуль - программный модуль, представленный в форме, пригодной для загрузки в оперативную память для выполнения. |
Загрузочный модуль сохраняется в виде файла на внешней памяти. Для выполнения программа должна быть перенесена (загружена) в оперативную память. Иногда при этом требуется некоторая дополнительная обработка (например, настройка адресов в программе на ту область оперативной памяти, в которую программа загрузилась). Эта функция выполняется Загрузчиком, который обычно входит в состав операционной системы.
Возможен также вариант, в котором редактирование связей выполняется при каждом запуске программы на выполнение и совмещается с загрузкой. Это делает Связывающий Загрузчик. Вариант связывания при запуске более расходный, т.к. затраты на связывание тиражируются при каждом запуске. Но он обеспечивает:
Вариант интерпретации подразумевает прямое исполнение исходного модуля.
| Определение (ГОСТ) | Интерпретация - реализация смысла некоторого синтаксически законченного текста, представленного на конкретном языке. |
Интерпретатор читает из исходного модуля очередное предложение программы, переводит его в машинный язык и выполняет. Все затраты на подготовку тиражируются при каждом выполнении, следовательно, интепретируемая программа принципиально менее эффективна, чем транслируемая. Однако, интерпретация обеспечивает удобство разработки, гибкость в сопровождении и переносимость.
Примеры интерпретаторов: языки процедур (sell, REXX), JVM.
Не обязательно подготовка программы должна вестись на той же вычислительной системе и в той же операционной среде, в которых программа будет выполняться. Системы, обеспечивающие подготовку программ в среде, отличной от целевой называются кросс-системами. В кросс-системе может выполняться вся подготовка или ее отдельные этапы:
Типовое применение кросс-систем - для тех случаев, когда целевая вычислительная среда просто не имеет ресурсов, необходимых для подготовки программ, например, встроенные системы.
Программные средства, обеспечивающие отладку программы на целевой системе можно также рассматривать как частный случай кросс-системы.
Дальнейшая тематика курса соответствует плану намеченному в первой теме: мы будем последовательно рассматривать системные обрабатывающие программы, обеспечивающие подготовку программ.
Качественное расширение возможностей
Качественное расширение возможностей.Активное и грамотное применение макросредств может сделать работу программиста весьма продуктивной. Так, затратив определенные усилия на создание библиотеки макроопределений, программист может превратить язык Ассемблера в качественно новый язык, который будет обладать некоторыми свойствами языка высокого уровня. Программист может сделать этот язык в известной степени проблемно-ориентированным, то есть в максимальной степени приспособленным для тех задач, которые решает его разработчик. Вкратце опишем те основные направления, по которым может идти расширение возможностей Ассемблера за счет макросредств.
Комментарии макроопределения
Комментарии макроопределенияЕсли в тексте макроопределения имеются комментарии, то они переходят в макрорасширение так же, как и операторы машинных команд и директив Ассемблера. Однако, должна быть обеспечена и возможность употребления таких комментариев, которые не переходят в макрорасширение - комментарии, которые относятся не к самой программе, а к макроопределению и порядку его обработки. Такие комментарии должны обладать некоторым отличительным признаком. Возможны специальные директивы Ассемблера, определяющие режим печати комментариев макроопределения.
Let me choose which tests to run
Let me choose which tests to run (Выбрать выполняемые тесты самостоятельно), то откроется список тестов, полный перечень которых приведен в таблице.| Norton Registry: Registry Integrity | Проверка системного реестра: общая структура и профили пользователей |
| Windows Registry Scan: ActiveX/COM Sections | Проверка системного реестра: разделы ActiveX/COM |
| Windows Registry Scan: ActiveX/COM SubKey Sections | Проверка системного реестра: записи ActiveX/COM |
| Windows Registry Scan: Application Paths Section | Проверка системного реестра: пути доступа к приложениям |
| Windows Registry Scan: Device Drivers Section | Проверка системного реестра: раздел драйверов устройств |
| Windows Registry Scan: Fonts Section | Проверка системного реестра: раздел шрифтов |
| Windows Registry Scan: Help Section | Проверка системного реестра: раздел справочной системы |
| Windows Registry Scan: Microsoft Shared Section | Проверка системного реестра: раздел ресурсов общего доступа приложений Microsoft |
| Windows Registry Scan: Run Sections | Проверка системного реестра: раздел запуска приложений |
| Windows Registry Scan: Sound Customization Sections | Проверка системного реестра: раздел настройки звуковых устройств |
| Windows Registry Scan:Symantec Shared Section | Проверка системного реестра: раздел ресурсов общего доступа приложений Symantec |
| Windows Registry Scan: Uninstall Section | Проверка системного реестра: раздел деинсталляции приложений |
| Windows Registry Scan: VxD Section | Проверка системного реестра: раздел VxD |
| Program Integrity Scan: Common Program Locations | Проверка структуры программ (объектов Рабочего стола, Главного меню, раздела деинсталляции приложений, динамических библиотек и других ресурсов общего доступа) |
| Ms-DOS Program Shortcut Scan: C; | Проверка параметров ярлыков программ MS-DOS |
| Shortcut Scan: C: | Поиск неприсоединенных ярлыков |
Щелчок на кнопке Analysis Agents (Агенты-анализаторы) открывает дополнительное окно, в котором можно выполнить настройку так называемых анализаторов, координирующих действия программы в случае обнаружения неисправности. Список анализаторов приводится в следующей таблице.
| Add manual registry editing solution | Добавить в сценарий ремонта ручное редактирование реестра |
| Search Norton Protected Recycle Bin for missing files | Искать отсутствующие файлы в Защищенной Корзине |
| Search Recycle Bin for missing files | Искать отсутствующие файлы в стандартной Корзине |
| Search all hard drives for missing files | Искать отсутствующие файлы на всех жестких дисках |
| Detect drive letter changes | Учитывать изменение буквы, обозначающей диск (например, при включении в BIOS загрузки с диска D: вместо диска C:) |
| Detect directories that have moved | Определять перемещенные или переименованные папки |
| Ignore missing files on removable drives and UNC paths | Игнорировать недостающие файлы на съемных носителях (например, на гибких дисках или CD-ROM) |
После выполнения сканирования откроется окно Norton WinDoctor в режиме Problems (Неисправности).
LiveUpdate (Обновление) Этот компонент
LiveUpdate (Обновление). Этот компонент предназначен для регулярного обновления программы через Интернет. Разумеется, для этого следует предварительно зарегистрироваться на сервере компании Symantec Corporation.
Rescue (Служба спасения). Эта служба предназначена для восстановления содержимого жесткого диска в случае разрушения важнейшей системной информации: данных CMOS, таблицы разделов и загрузочных записей. Предусматривает предварительное создание аварийного комплекта на дискетах.
Options (Настройки). Интегрированное средство настройки некоторых компонентов программы. Локальные переменные макроопределения
Локальные переменные макроопределенияПоскольку генерация макрорасширения ведется по некоторому алгоритму, описанному в макроопределении, реализация этого алгоритма может потребовать собственных переменных. Эти переменные имеют силу только внутри данного макроопределения, в макрорасширении не остается никаких "следов" переменных макроопределения.
Переменные макроопределения могут использоваться двумя способами:
При подстановке значений переменных макроопределения в макрорасширение работают те же правила, что и при подстановки значений параметров.
Для сильносвязанных Макропроцессоров необходимости в локальных переменных макроопределения, вместо них могут использоваться имена программы (определяемые директивой EQU). Для сильносвязанных и независимых процессоров переменный макроопределения и имена программы должны различаться, для этого может применяться тот же признак, что и для параметров макроопределения. Объявление локальной переменной макроопределения может иметь, например, вид: имя_переменной LOCL начальное_значение (последнее необязательно)
Макрокоманды внутри макроопределений
Макрокоманды внутри макроопределенийВ отличие от предыдущего, это средство может быть весьма полезным. Прежде всего - для часто употребляемых макрокоманд, могут быть включены в библиотеки макроопределений - системные или пользовательские. Это может весьма упростить создание новых макроопределений.
Для обеспечения такой возможности достаточно сделать рекурсивным только 2-й проход Макропроцессора. В нем несколько усложняется анализ операторов макроопределения. В ветви "Другой" (на нашей схеме алгоритма она начинается с блока ) 2-й проход Макропроцессора должен распознавать макрокоманду и, если оператор - макрокоманда, вызывать сам себя. Распознавание макрокоманды - методом исключения: если оператор - не оператор Макроязыка, не директива Ассемблера и не машинная команда, то он считается макрокомандой и ищется в Таблице имен макроопределений. Для рекурсивного вызова создается новая Таблица локальных переменны (и параметров). Таблица глобальных переменных и индекс уникальных меток используются общие.
Некоторая сложность возникает в том случае если вложенные марокоманды - библиотечные. В нашем алгоритме 1-го прохода содержимое макроопределения (то, что лежит между операторами MACRO и MEND) не анализировалось, следовательно, определения вложенных макрокоманд не заносились в Таблицы макроопределений и имен макропредолений. Есть два варианта решения этой проблемы:
Макроопределения внутри макроопределений
Макроопределения внутри макроопределенийЧестно говоря, необходимость в таких средствах сомнительна. Она может возникнуть при создании большого макроопределения, в котором есть повторяющиеся фрагменты. Вложенное макроопределение действительно только внутри того макроопределения, в которое оно вложено.
Против такого средства можно привести 2 соображения:
Тем не менее, если вложенные макроопределения все же необходимы, можно предложить следующий вариант их реализации:
Макрорасширения в листинге
Макрорасширения в листингеКак уже неоднократно говорилось, макрорасширения для Ассемблера неотличимы от программного текста, написанного программистом "своей рукой". Но программист, анализируя листинг программы, конечно, должен видеть макрорасширения и отличать их от основного текста. Как правило, директивы Ассемблера, управляющие печатью листинга предусматривают режим, при котором макрорасширение не печатается в листинге, а печатается только макрокоманда и режим, при котором в листинге печатается и макрокоманда, и ее макрорасширение, но операторы макрорасширения помечаются каким-либо специальным символом.
Measurement
Measurement(Измерение) служит для настройки режимов измерения. Движок Time between Sensor Readings (Интервал времени между замерами) определяет периодичность считывания показаний. Этот параметр может находиться в пределах от 1 секунды до 1 недели. Переключатель Measurement Type (Измеряемое значение) имеет положения: Actual Value (Мгновенное значение) и Decaying Average (Усредненное значение).
Группа Sensor Maximum Reading (Максимальное значение показаний) используется только для тех датчиков, максимальное значение которых не определено. В этом случае можно выбрать один из вариантов: Let System Doctor Control (Максимальное измеренное значение - определяется программой) или Use Fixed Maximum (Максимальное значение - определяется пользователем в поле Maximum).
Команда Update (Обновить)
Информация обновляется в соответствии с периодичностью, заданной для каждого датчика. Но обновление текущих показаний датчиков можно выполнить и в любой момент, воспользовавшись пунктом контекстного меню Update.
Команда Reset (Сброс)
Эта команда доступна для датчиков, регистрирующих изменение параметров во времени, например таких как CPU Usage (Загрузка процессора). При щелчке на этом пункте контекстного меню происходит обнуление показаний.
Команда Remove (Удалить)
С помощью этой команды можно удалить датчик и прекратить отслеживание контролируемого параметра.
Команда Sensor Information (Информация о датчике)
После нажатия на этот пункт контекстного меню откроется окно с информацией о данном датчике. Подробнее>>
Команда Sensor History Window (Журнал датчика)
Эта команда позволяет вывести дополнительное окно, в котором не только отражаются данные за некоторый отрезок времени, но и приводятся цифровые значения: Current (Текущее), Highest (Наибольшее) и Lowest (Наименьшее). Щелчок правой кнопки мыши на заголовке этого окна открывает доступ к командам, относящимся только к этому окну: Always on Top (Всегда сверху) и Reset Highest and Lowest (Сбросить наибольшее и наименьшее значения).
Команда Add Sensor (Добавить датчик)
Этой командой можно добавить новый датчик. Подробный список всех датчиков смотри здесь>>.
Команда File (Файл)
При постановке различных экспериментов, связанных с оптимизацией работы компьютерной системы, могут использоваться различные датчики и требоваться их различная настройка. Для сохранения и загрузки текущей конфигурации предназначены команды, входящие в группу File: Save (Сохранить), Save As (Сохранить как), Open (Открыть).
Команда View (Вид)
Команда View открывает подменю, вид которого показан на рисунке.
| Show Title Bar - Показать/скрыть заголовок окна Show Symantec Logo - Показать/скрыть эмблему Symantec Hidden Sensors - Скрытый датчик Always on Top - Всегда сверху Auto Hide - Скрывать автоматически Dock - Пристыковать Options... - Параметры |
Если выбрать пункт Options (Параметры), то откроется диалоговое окно настроек программы, имеющее несколько вкладок.
Модель оперативной памяти
Модель оперативной памятиОбъем адресного пространства памяти, к которому теоретически могут выполняться обращения к программе определяется разрядностью представления адреса. Однако, реально в целевой ВС может быть значительно меньший объем памяти. Во встроенных ВС адресное пространство может покрываться реальной памятью несмежными фрагментами, причем фрагменты реальной памяти могут быть как ОЗУ, так и ПЗУ.
Интерпретатор должен "знать" конфигурацию реальной памяти в целевой ВС. Возможные варианты задания такой конфигурации:
Внешнее описание памяти считывается Интерпретатором в начале работы и превращается в таблицу фрагментов вида:

Оперативная память целевой ВС представляется памятью (не обязательно оперативной) исходной ВС. Однако, в модели памяти на исходной ВС мы имеем возможность помимо собственно данных, хранящихся в целевой памяти, представлять также и описание этих данных. Каждый байт целевой памяти представляется двумя байтами исходной памяти. В первом байте представления хранятся собственно данные, а во втором - ряд признаков, характеризующих ячейку целевой памяти. Среди этих признаков могут быть такие:
| a | признак 1-го байта команды (управление можно передавать только на 1-й байт команды); |
| b | признак команды/данных |
| c | признак инициализированных/неинициализированных данных |
| d | признак изменяемых/неизменяемых данных |
| e | признак останова при передаче управления |
| f | признак останова при передаче записи |
| g | признак останова при передаче чтении |
| h | и т.д. |
Все названные признаки - однобитные. Признаки a, b устанавливаются Кросс-ассемблером при трансляции программы и не изменяются при выполнении. Признак с устанавливается Кросс-ассемблером, но может изменяться Интерпретатором в процессе выполнения. Признак d устанавливается Интерпретатором перед началом выполнения на основе таблицы фрагментов и, возможно, дополнительной информации, вводимой программистом (отдельно от программы) и может изменяться программистом в ходе интерактивной отладки. Признаки e-f устанавливаются перед началом выполнения на основе дополнительной информации и может изменяться программистом в ходе интерактивной отладки.
Дополнительная информация о памяти, таким образом, состоит из таблицы фрагментов, списка переменных в ОЗУ, которые не разрешается изменять, списка переменных, при обращении к которым должен происходить останов, и меток, при передаче управления на которые должен происходить останов.
Каждое обращение к памяти в программе характеризуется типом: R (чтение), W(запись) или X(передача управления). При любом типе обращения проверяется попадание в реально существующий фрагмент памяти. При обращении типа X проверяется бит a признака, управление может быть передано только на байт с установленным признаком a. При обращениях типа R и W проверяется бит b признака, обращения этого типа могут происходить только к данным При обращениях типа R проверяется бит c признака, читаться могут только инициализированные данные При обращениях типа W проверяется бит d признака, данные должны быть изменяемые, бит с признака при этом устанавливается, т.е. данные становятся инициализированными.
Модель процессора
Модель процессораРабота процессора моделируется алгоритмом работы Интерпретатора. Основной алгоритм работы модели состоит из цикла, в каждой итерации которого моделируется выполнение одной команды целевой программы. Итерация этого цикла начинается с выборки байта, записанному в модели памяти по адресу, содержащемуся в модели регистра-счетчика адреса. В подавляющем большинстве ВС первый байт команды содержит код операции, позволяющий однозначно идентифицировать команду. Интерпретатор выполняет поиск по коду операции в таблице команд. При этом может использоваться либо таблица команд Ассемблера, либо ее модификация с расширениями и с возможностью быстрого поиска по коду операции. Распознав команду, Интерпретатор выбирает ее остальные байты (их количество определено в таблице команд) и выделяет из них операнды команды (их количество и кодировка определяется типом команды). Далее алгоритм Интерпретатора разветвляется, в общем случае число ветвей равно числу возможных кодов операции. В каждой ветви вычисляется значение, являющееся результатом выполнения той или иной команды. Вычисленное значение заносится в объект, являющийся для данной команды приемником результата. Кроме того для тех команд, для которых это требуется устанавливаются значения признаков в регистре состояния (перечень признаков, устанавливаемых командой, может содержаться в таблице команд Интерпретатора). Вычисляется новое значение регистра-счетчика адреса. В большинстве случаев это значение получается добавлением к текущему его значению длины команды, но в командах перехода (типа JMP, CALL) это значение вычисляется.
При реализации алгоритмов выполнения отдельных команд возможны два подхода, которые мы называем RISC и CISC-моделями, по аналогии с архитектурами процессоров (однако выбор программной RISC или CISC-модели необязательно должен совпадать с реальной архитектурой процессора).
Смысл RISC-модели состоит в том, что разветвление алгоритма выполняется сразу же после распознавания команды и выполнение каждой команды полностью реализуется кодами соответствующей ветви.
Смысл CISC-модели состоит в том, что выполнение каждой команды представляется в виде последовательности выполнения простых процедур ("микрокоманд"). Список микрокоманд, составляющих выполнение каждой команды, может быть "зашит" в программу в виде последовательности вызовов или представлен в виде данных, например, в виде списка номеров процедур. В последнем случае алгоритм не требует ветвления, а сводится к циклу, в каждой итерации которого выбирается номер очередной процедуры и вызывается процедура с данным номером. В предельном случае выполнение каждой команды может быть представлено в виде исходного текста на языке макрокоманд, который интерпретируется Интерпретатором.
Пример
Пусть в языке микрокоманд имеются следующие (показаны не все) микрокоманды:
| Микрокоманда | Выполнение |
| GETR n,rx | Выборка номера регистра, заданного в n-ом операнде в промежуточную переменную rx |
| GETA n,ax | Выборка адреса, заданного в n-ом операнде в промежуточную переменную ax |
| LDR dx,rx | Выборка данных из регистра, номер которого находится в промежуточной переменной rx в промежуточную переменную dx |
| LDM dx,ax | Выборка данных из памяти по адресу, находящемуся в промежуточной переменной ax промежуточную переменную dx |
| SDR rx,dx | Запись данных из промежуточной переменной dx в регистр, номер которого находится в промежуточной переменной rx |
| SDM dx,ax | Запись данных из промежуточной переменной dx в память по адресу, находящемуся в промежуточной переменной ax промежуточную переменную dx |
| ADD dx1,dx2 | Сложение данных из промежуточной переменной dx1 с данными из dx2; результат - в dx1 |
| SIG dx | Инверсия знака данных, содержащихся в промежуточной переменной dx |
| CC1 dx | Установка признаков "больше", "меньше", "равно" по значению, содержащемуся в промежуточной переменной dx |
| CC2 dx | Установка признака переполнения по значению, содержащемуся в промежуточной переменной dx |
| PC1 | Увеличение регистра-счетчика адреса на длину команды |
| PC2 dx | Запись данных из промежуточной переменной dx в регистр-счетчика адреса |
| END | Окончание микропрограммы |
Тогда реализация некоторых машинных команд может быть "замикропрограммирована" следующим образом:
| Команда языка Ассемблера | Выполнение | Микропрограммная реализация |
| LR регистр2,регистр1 | Пересылка данных из регистра1 в регистр2 | GETR 2, r1; LDR d1,r1; GETR 1,r2; SDR r2,d1, PC1; END; |
| L регистр,память | Пересылка данных из памяти по адресу память в регистр | GETA 2,a1; LDM d1,a1; GETR 1,r1; SDR r1,d1; PC1; END; |
| AR регистр2,регистр1 | Сложение данных из регистра1 с данными в регистре2; результат - в регистре1 | GETR 2, r1; LDR d1,r1; GETR 1,r2; LDR d2, r2; ADD d1,d2; SDR r1; PC1; END; |
| CMP регистр,память | Сравнение данных, содержащихся в регистре с данными по адресу память | GETR 1,r1; LDR d1,r1; GETA 2, a1; LDM d2,a1; SIG d2; ADD d1,d2; CC1 d1; CC2 d1; PC1; END; |
| JMP память | Переход по адресу память | GETA 2,a2; PC2 a2; END; |
Очевидно, что RISC-модель будет выполняться быстрее, но CISC-модель гибче, так как активные элементы (команды) в ней превращены в пассивные (данные). В аппаратных архитектурах предпочтение отдается RISC из-за высшей эффективности, а какие критерии являются более важными при отладке?
Модель регистров
Модель регистровМодель регистров включает в себя, как минимум:
Регистры моделируются переменными интерпретатора.
РОН во время выполнения программы содержат обрабатываемые данные. РОН могут моделироваться как отдельными переменными, так и массивами - в зависимости от их количества и свойств. В тех ВС, где РОН немного и некоторые из них обладают собственными индивидуальными свойствами (напр., Intel) удобно представлять каждый РОН в виде отдельной переменной. Для тех ВС, где РОН много и/или они одинаковы во всем (напр., S/390, все RISC) , их целесообразно представлять в виде массива. Характерно, что в ВС первого типа РОН обычно имеют собственные имена, а в ВС второго типа РОН идентифицируются номерами.
Счетчик адреса содержит адрес текущий выполняемой команды и представляется в виде отдельной переменной.
Регистр состояния содержит признаки результата выполнения предыдущей команды - больше, меньше, равен нулю (не все команды устанавливают эти признаки) и, возможно, признак привилегированного/непривилегированного режима. Эти признаки могут "упаковываться" в одну переменную или представляться отдельной переменной каждый.
На вкладке Automatic Tracking
На вкладке Automatic Tracking(Автоматическое отслеживание) можно установить флажок Start automatically with Windows (Автоматический запуск вместе с Windows). Счетчик Maximum number to keep (Максимальное число снимков) ограничивает размер журнала изменений. К количественным ограничениям можно добавить ограничение по времени, установив флажок Purge old snapshots after ... days (Удалять старые снимки, хранящиеся более ... дней).
На вкладке
На вкладкеНастраивающие Загрузчики
Настраивающие ЗагрузчикиНастраивающий Загрузчик является первым шагом в сторону усложнения от Абсолютного Загрузчика. Функции связывания и перемещения решаются в нем не самым эффективным, но простейшим способом.
Настройка программы
Настройка программыДля того чтобы избавиться от лишней информации при сравнении, можно выполнить некоторую настройку в диалоговом окне, вызываемом с помощью команды Options>Settings (Параметры>Настройки).
| На вкладке Comparison (Сравнение) имеются следующие опции. Ignore All Tabs and Spaces (Игнорировать все символы табуляции и пробелы). Ignore Changes in Tabs and Spaces (Игнорировать изменения в символах табуляции и пробелах). Ignore Upper/Lower Case Changes (Игнорировать изменение регистра символов) |
На вкладке Display (Отображение) того же диалогового окна можно вывести или скрыть нумерацию строк с помощью флажка Show Line Numbers (Отображать нумерацию строк), а также задать шрифт и цвет отображаемых компонентов с помощью раскрывающихся списков Fonts & Colors (Шрифты и цвета).
Программа Norton File Compare имеет некоторую интеграцию с программой Norton Registry Tracker. При работе последней различия некоторых элементов могут быть непринципиальными, поэтому можно исключить их из результатов сравнения. Это можно сделать непосредственно из программы Norton File Compare - надо выделить требуемые строки и подать команду Options>Exclude (Параметры>Исключить). А по команде Options>Edit Exclusions (Параметры>Редактирование исключений) открывается диалоговое окно Norton Registry Tracker Settings, в котором можно удалить установленное исключение.
Некоторые дополнительные директивы
Некоторые дополнительные директивы| OGR |
Установка адреса. Операндом директивы является числовая константа или выражение, вычисляемое при ассемблировании. Как правило, Ассемблер считает, что первая ячейка обрабатываемой им программы располагается по адресу 0. Директива ORG устанавливает счетчик адресов программы в значение, определяемое операндом. Так, при создании COM-программ для MS DOS программа начинается с директивы ORG 100H. Этим оператором резервируется 256 байт в начале программы для размещения префикса программного сегмента. В абсолютных программах директива применяется для размещения программы по абсолютным адресам памяти. |
| START/ SECT | Начало модуля или программной секции. Операндом директивы является имя секции. Этой директивой устанавливается в 0 счетчик адресов программы. Программа может состоять из нескольких программных секций, в каждой секции счет адресов ведется от 0. При обработке этой директивы на 1-ом проходе Ассемблер создает таблицу программных секций вида: |

На 1-ом проходе Ассемблер составляет список секций, и только в конце 1-го прохода определяет их длины и относительные адреса в программе.
На 2-ом проходе Ассемблер использует таблицу секций при трансляции адресов.
Некоторые структуры данных 1го прохода
Некоторые структуры данных 1-го проходаТаблица команд содержит одну строку для каждой мнемоники машинной команды. Ниже приведен пример структуры такой таблицы для простого случая, когда мнемоника однозначно определяет формат и длину команды. Обработка команд происходит по всего нескольким алгоритмам, зависящим от формата команды, поэтому в данном случае все параметры обработки могут быть представлены в виде данных, содержащихся в таблице.

Таблица директив содержит одну строку для каждой директивы Обработка каждой директивы происходит по индивидуальному алгоритму, поэтому параметры обработки нельзя представить в виде данных единого для всех директив формата. Для каждой директивы в таблице хранится только идентификация (имя или адрес, или номер) процедуры Ассемблера, выполняющей эту обработку. Некоторые директивы обрабатываются только на 1-ом проходе, некоторые - только на 2-ом, для некоторых обработка распределяется между двумя проходами.

Таблица символов является основным результатом 1-го прохода Ассемблера. Каждое имя, определенное в программе, должно быть записано в таблице символов. Для каждого имени в таблице хранится его значение. , размер объекта, связанного с этим именем и признак перемещаемости/неперемещаемости. Значением имени является число, в большинстве случаев интерпретируемое как адрес, поэтому разрядность значения равна разрядности адреса. Перемещаемость рассматривается в разделе, посвященном Загрузчикам, здесь укажем только, что значение перемещаемого имени должно изменяться при загрузке программы в память. Имена, относящиеся к командам или к памяти, выделяемой директивами DD, BSS, как правило, являются перемещаемыми (относительными), имена, значения которых определяются директивой EQU (см. ниже), являются неперемещаемыми (абсолютными).

Таблица литералов содержит запись для каждого употребленного в модуле литерала. Для каждого литерала в таблице содержится его символьное обозначение, длина и ссылка на значение. Литерал представляет собой константу, записанную в памяти. Обращение к литералам производится так же, как и к именам ячеек программы. По мере обнаружения в программе литералов Ассемблер заносит их данные в т.наз. литеральный пул. Значение, записываемое в таблицу литералов является смещением литерала в литеральном пуле. После окончания 1-го прохода Ассемблер размещает литеральный пул в конце программы (т.е., назначает ему адрес, соответствующий последнему значению счетчик адреса) и корректирует значения в таблице литералов, заменяя их смещениями относительно начала программы. После выполнения этой корректировки таблица литералов может быть совмещена с таблицей символов.

Некоторые возможности Макроязыка
Некоторые возможности МакроязыкаНиже мы описываем некоторые возможности макроязыка, в той или иной форме реализованные во всех Макропроцессорах. Мы, однако, ориентируемся прежде всего на Макропроцессор, независимый от Ассемблера, потому что в этой категории функции Макропроцессора легче определить.
Непосредственно Связывающие Загрузчики
Непосредственно Связывающие ЗагрузчикиЭти Загрузчики называются непосредственно связывающими потому, что они обеспечивают обращение к внешней точке непосредственно, а не через косвенную адресацию. Эти Загрузчики обеспечивают более высокую эффективность кода и более гибкие возможности связывания. Такие возможности достигаются за счет того, что в объектном модуле содержится вся необходимая для Загрузчика информация.
Norton Disk Doctor (Проверка диска)
Norton Disk Doctor (Проверка диска).Norton Registry Editor (Редактор
Norton Registry Editor (Редактор реестра). Программа выполняет функции, аналогичные системной служебной программе RegEdit, но имеет расширенные возможности.
Norton Registry Tracker (Образ реестра). Программа, выполняющая "моментальный снимок" системного реестра с целью контроля за изменениями, возникающими в Реестре в процессе работы, например при установке новых программ. Позволяет восстановить состояние Реестра, предшествующее установке новой программы.
Прочие компоненты
Некоторые компоненты пакета обособлены и вызываются с помощью кнопок меню в верхней части окна Norton Utilites Integraror.
Norton System Check (Проверка
Norton System Check (Проверка системы). Программа предназначена для всесторонней проверки операционной системы и объединяет в себе средства проверки Windows и жесткого диска. Используется для улучшения эксплуатационных показателей и как средство профилактического обслуживания.Обслуживание системы (System Maintenance)
Norton System Doctor (Системный монитор)
Norton System Doctor (Системный монитор).Norton WinDoctor (Проверка Windows)
Norton WinDoctor (Проверка Windows). Мощное средство для проверки операционной системы (системного реестра и системных файлов Windows) и выявления наиболее характерных ошибок, например неприсоединенных записей реестра, ярлыков, указывающих на несуществующие файлы и т.п.
Norton WinDoctor
Norton WinDoctorNortondiskdoctordos
Этот модуль может запускаться для проверки жесткого диска после аварийного завершения работы Windows вместо стандартной системной программы scandisk.exe. Подключение модуля выполняют в окне Интегратора. |
| 1. | Нажмите кнопку Options . |
| 2. | Откройте вкладку General. |
| 3. | Установите флажок Replace ScanDisk with Norton Disk Doctor (Заменить ScanDisk программой Norton Disk Doctor). |
Nortondiskdoctorfordos
Этот DOS-модуль может пригодиться в ситуации, когда из-за ошибок в файловой системе невозможно загрузить операционную систему с жесткого диска. При запуске из оболочки Rescue Disk Shell последует предложение вставить в дисковод дискету NU Emergency Utilities Disk 1. Вставьте необходимую дискету и нажмите клавишу ENTER. После загрузки программы вы увидите окно, показанное на рисунке ниже. |
| Diagnose Disk - запуск проверки диска; Surface Test - проверка поверхности диска; Undo Changes - отмена изменений; Options - настройки; Quit Disk Doctor - закрыть программу. |
Основные принципы работы и настройки программы сходны с описанными в разделе Norton Disk Doctor для Windows, поэтому подробно останавливаться на них не будем.
Будьте осторожны при первом запуске! Если обнаружены ошибки, связанные с именами файлов, не предпринимайте никаких мер по лечению. Подробнее эта проблема описана в разделе Внимание! Nortonrescuefordos
DOS-модуль программы Rescue восстанавливает следующие поврежденные данные в служебных секторах жесткого диска: |
| · | CMOS Information (Данные CMOS). Данные CMOS восстанавливают параметры BIOS компьютера (Setup). Наиболее критичны параметры, задающие тип жесткого диска. Неверные значения могут сделать загрузку невозможной. |
| · | Boot Records (Загрузочные записи). В случае ошибок в загрузочной записи система может потерять таблицу размещения файлов (FAT), корневую папку и, таким образом, вообще все ваши данные. |
| · | Partition Tables (Таблицы разделов). Данные таблицы разделов описывают физические характеристики каждого диска, разбиение его на диски DOS, присутствие других операционных систем. Неверная информация в такой таблице заблокирует загрузку с этого диска или сделает его недоступным для DOS. |
Восстановление оказывается возможным благодаря тому, что перечисленные данные сохраняются при создании аварийного комплекта.
Эти данные действительны до той поры, пока не произведены глобальные изменения, такие как переустановка операционной системы, замена жесткого диска или его переформатирование. После этого этих операций аварийный комплект дискет надо обновить. После запуска программы Rescue предлагается с помощью флажков уточнить, какую именно информацию требуется восстановить.
| При работе аварийного комплекта мышь не работает, так что перемещаться между полями можно клавишей TAB, а устанавливать и сбрасывать флажки - клавишей ПРОБЕЛ. Нажатие клавиши ENTER восстановит утраченную информацию. Завершить работу программы можно клавишей ESC. |
Использовать для восстановления диска аварийный комплект можно только на том компьютере, на котором он был создан. О структуре таблиц Ассемблера
О структуре таблиц АссемблераСтруктура таблиц Ассемблера выбирается таким образом, чтобы обеспечить максимальную скорость поиска в них.
Таблицы команд и директив являются постоянной базой данных. Они заполняются один раз - при разработке Ассемблера, а затем остаются неизменными. Эти таблицы целесоообразно строить как таблицы прямого доступа с функцией хеширования, осуществляющей преобразование мнемоники в адрес записи в таблице. Имеет смысл постараться и подобрать функцию хеширования такой, чтобы в таблице не было коллизий. Поскольку заполнение таблицы происходит один раз, а доступ к ней производится многократно, эти затраты окупаются.
Таблица символов формируется динамически - в процессе работы 1-го прохода. Поиск же в этой таблице осуществляется как в 1-ом проходе (перед занесением в таблицу нового имени, проверяется, нет ли его уже в таблице). Построение этой таблицы как таблицы прямого доступа не очень целесообразно, так как неизбежно возникновение коллизий. Поэтому поиск в таблице символов может быть дихотомическим, но для этого таблица должна быть упорядочена. Поскольку новые имена добавляются в таблицу "по одному", и после каждого добавления упорядоченность таблицы должна восстанавливаться, целесообразно применять алгоритму сортировки, чувствительные к исходной упорядоченности данных.
Эти же соображения относятся и к другим таблицам, формируемым Ассемблером в процессе работы. При больших размерах таблиц и размещении их на внешней памяти могут применяться и более сложные (но и более эффективные) методы их организации, например - B+-деревья.
Объектноориентированный Ассемблер
Объектно-ориентированный АссемблерМакросредства могут обеспечить и реализацию свойств объектно-ориентированного программирования - в большей или меньшей степени.
Простейшее расширение Ассемблера ОО свойствами предполагает введение макрокоманды определения объекта (или резервирования памяти для объекта). В макрокоманде указывается тип объекта и она употребляется вместо директив DC/BSS. Для типа могут быть созданы макрокоманды-операции. В этом варианте может быть воплощен принцип полиморфизма, так как одна и та же операция может быть допустимой для разных типов. (Например, одна команда сложения для всех типов - чисел, независимо от из разрядности и формы представления). Принцип инкапсуляции реализуется здесь в том смысле, что программист, использующий макрокоманды не должен знать внутренней структуры объекта и подробности выполнения операций над ним, защиту же внутренней структуры организовать гораздо сложнее.
Имеются примеры разработок, в которых на уровне Макроязыка созданы и средства описания классов, включающие в себя наследование классов со всеми вытекающими из него возможностями.
Общие сведения
Общие сведенияПрограмма Norton Protection служит для обеспечения возможности восстановления удаленных файлов. В отличие от стандартной корзины Windows, программа Norton Protection позволяет восстановить даже файлы не попавшие в Корзину, например удаленные автоматически во время работы приложений или в сеансе MS-DOS.
Система защиты Norton Protection основана на том, что место, освобождаемое при удалении файла, хотя и считается свободным, все-таки некоторое время "придерживается" от перезаписи, пока имеется другое свободное пространство. Дело в том, что при удалении файла не происходит его физического уничтожения - меняется только первый байт в имени файла, что для операционной системы означает освобождение занятого файлом места. На освободившееся место тут же может быть записан другой файл, а может быть и нет - все зависит от случая. Пока перезапись не произошла, файл можно восстановить.
Обычно предлагается провести полную
| Обычно предлагается провести полную оптимизацию (Full Optimization), которая дает наибольший эффект, но занимает наибольшее время. Если вы не располагаете достаточным временем, то выберите вариант Unfragmented Files Only (Только дефрагментация файлов) или совсем быстрый вариант Unfragmented Free Space (Дефрагментация свободного места). Флажок Optimize Swap File (Оптимизировать файл подкачки) снимать не рекомендуется, так как от этого напрямую зависит быстродействие системы. |
Одно и многопроходный Ассемблер
Одно- и многопроходный АссемблерМы показали, что в двухпроходном Ассемблере на 1-ом проходе осуществляется определение имен, а на втором - генерация кода.
Можно ли построить однопроходный Ассемблер? Трудность состоит в том, что в программе имя может появиться в поле операнда команды прежде, чем это имя появится в поле метки/имени, и Ассемблер не может преобразовать это имя в адресное выражение, т.к. еще на знает его значение. Как решить эту проблему?
При появлении имени в поле операнда Ассемблер ищет имя в таблице символов. Если имя найдено и помечено как определенное, Ассемблер транслирует его в адресное выражение, как и при 2-проходном режиме. Если имя не найдено, Ассемблер заносит имя в таблицу символов, помечает его неопределенным и создает первый элемент связанного с именем списка, в который заносит адрес в объектном модуле операнда данной команды. Если имя найдено, но помечено как определенное, Ассемблер добавляет в список, связанный с данным именем, адрес в объектном модуле операнда данной команды.
При появлении имени в поле метки команды или директивы Ассемблер определяет значение имени и ищет его в таблице символов. Если имя не найдено, Ассемблер добавляет имя в таблицу и помечает его как определенное. Если имя найдено и помечено как определенное, Ассемблер выдает сообщение об ошибке (неуникальное имя). Если имя найдено, но помечено как определенное, Ассемблер обрабатывает связанный с данным именем список: для каждого элемента списка по хранящемуся в нем адресу в объектном модуле записывается значение имени. После обработки список уничтожается, значение имени сохраняется в таблице символов и имя помечается как определенное.
После окончания прохода Ассемблер проверяет таблицу символов: если в ней остались неопределенные имена, выдается сообщение об ошибке.
Для чего может понадобиться многопроходный Ассемблер? Единственная необходимость во многих проходах может возникнуть, если в директиве EQU разрешены ссылки вперед. Мы упоминали выше, что имя в директиве EQU может определяться через другое имя. В одно- или двухпроходном Ассемблере это другое имя должно быть обязательно определено в программе выше. В многопроходном Ассемблере оно может быть определено и ниже. На первом проходе происходит определение имен и составление таблицы символов, но некоторые имена остаются неопределенными. На втором проходе определяются имена, не определившиеся во время предыдущего прохода. Второй проход повторяется до тех пор, пока не будут определены все имена (или не выяснится, что какие-то имена определить невозможно). На последнем проходе генерируется объектный код.
Окно Customize Full Optimization
Окно Customize Full Optimization | В правой части окна на панели Disk Layout мы видим распределение файлов по категориям: Frequently accessed files (Часто открываемые файлы); Remaining files and folders (Редактируемые данные) Infrequently modified files (Редко изменяемые файлы) Frequently modified files (Часто изменяемые файлы) Files to place last (Файлы, располагаемые в конце) Free Space (Свободное место) Infrequently accessed files (Редко открываемые файлы) |
На левой половине расположены вкладки, задающие порядок оптимизации.
Окно Norton Disk Doctor
Norton Disk Doctor |
Окно Options for Norton Disk Doctor
Окно Options for Norton Disk DoctorОкно Speed Disk
Speed DiskОкончание макроопределения
Окончание макроопределенияЕсли у макроопределения есть начало (оператор MACRO), то у него, естественно, должен быть и конец. Конец макроопределения определяется оператором MEND. Этот оператор не требует параметров. Макроопределение, взятое в "скобки" MACRO - MEND может располагаться в любом месте исходного модуля, но обычно все макроопределения размещают в начале или в конце модуля.
Операнды команд
Операнды команд.Константы - могут представлять непосредственные операнды или абсолютные адреса памяти. Применяются 10-ные, 8-ные, 16-ные, 2-ные, символьные константы.
Непосредственные операнды - записываются в сам код команды.
Имена - адреса ячеек памяти. При трансляции Ассемблер преобразует имена в адреса. Способ преобразования имени в значение зависит от принятых способов адресации. Как правило, в основным способом адресации в машинных языках является адресация относительная: адрес в команде задается в виде смещения относительно какого-то базового адреса, значение которого содержится в некотором базовом регистре. В качестве базового могут применяться либо специальные регистры (DS, CS в Intel) или регистры общего назначения (S/390).
Литералы - записанные в особой форме константы. Концептуально литералы - те же имена. При появлении в программе литерала Ассемблер выделяет ячейку памяти и записывает в нее заданную в литерале константу. Далее все появления этого литерала Ассемблер заменяет на обращения по адресу этой ячейки. Таким образом, литеральные константы, хранятся в памяти в одном экземпляре, независимо от числа обращений к ним.
Специальный синтаксис - явное описание способа адресации (например, указание базового регистра и смещения и т.п.).
Оператор безусловного перехода и метки макроопределения
Оператор безусловного перехода и метки макроопределенияВозможный формат оператора: MGO макрометка Концептуально важным понятием является макрометка. Макрометка может стоять перед оператором Макроязыка или перед оператором языка Ассемблера. Макрометки не имеют ничего общего с метками в программе. Передача управления на макрометку означает то, что при обработке макроопределения следующим будет обрабатываться оператор, помеченный макрометкой. Макрометки должны иметь какой-то признак, по которому их имена отличались бы от имен программы и переменных макроопределения. Например, если имена переменных макроопределения начинаются с символа &, то имя макрометки может начинаться с &&.
Оператор условного перехода
Оператор условного переходаВозможный формат оператора: MIF условное_выражение макрометка Если условное_выражение имеет значение "истина", обработка переходит на оператор, помеченный макрометкой, иначе обрабатывается следующий оператор макроопределения. Условные выражения формируются по обычным правилам языков программирования. В них могут употребляться параметры и переменные (локальные и глобальные) макроопределения, константы, строковые, арифметические и логические операции и, конечно же, операции сравнения. Кроме того, в составе Макроязыка обычно имеются специальные функции, позволяющие распознавать тип своих операндов, например: является ли операнд строковым представлением числа, является ли операнд именем, является ли операнд именем регистра и т.п.
Операторы повторений
Операторы повторенийОператоры повторений Макроязыка (или директивы повторений языка Ассемблера) заставляют повторить блок операторов исходного текста, возможно, с модификациями в каждом повторении. Операторы повторений играют роль операторов цикла в языках программирования, они не являются обязательными для макроязыка, так как цикл можно обеспечить и условным переходом.
Как и в языках программирования, в Макроязыке может быть несколько форм операторов повторения, приведем некоторые (не все) из возможных форм:
Options В открывшемся окне настроек
Options. В открывшемся окне настроек откройте вкладку Norton Protection и установите флажок Enable Protection (Разрешить защиту). Эту операцию можно проделать и другим способом. Щелкните правой кнопкой мыши по значку корзины на Рабочем столе и выберите в контекстном меню пункт Свойства. В появившемся окне вы увидите вкладки Norton Protection и Recycle Bin, которые дают доступ ко всем настройкам программы Norton Protection.Options
OptionsОкно Options открывается следующей командой - View>Options (Вид>Параметры).
На вкладке General расположена всего одна кнопка Clear Ignore List (Очистить список игнорирования). С помощью этой кнопки можно отменить игнорирование для всех таких неисправностей.
Вкладка Repair History (Журнал ремонта) содержит средства для настройки параметров учета ремонта в журнале. В группе Keep Repair History For (Сохранять журнал ремонта) можно выбрать варианты:
| · | Days (Заданное число дней); |
| · | Number of Repairs (Заданное число ремонтов); |
| · | Forever (Неограниченно долго). |
Основные понятия
Основные понятия| Определение (не по ГОСТ) | Макропроцессор - модуль системного ПО, позволяющий расширить возможности языка Ассемблера за счет предварительной обработки исходного текста программы. |
Определение, которое дает ГОСТ не представляется удачным, так как оно говорит только о сокращении объема записи, а это лишь одна из возможностей обеспечиваемых Макропроцессором. Хотя Макропроцессоры являются обязательным элементом всех современных языков Ассемблеров, аналогичные модули (Препроцессоры) могут быть и для других языков, в том числе и для языков высокого уровня. Для одних языков (Pascal, PL/1) применение средств препроцессора является опционным, для других (C, C++) - обязательным.
Важно понимать, что Макропроцессор осуществляет обработку исходного текста. Он "не вникает" в синтаксис и семантику операторов и переменных языка Ассемблера, не знает (как правило) имен, употребляемых в программе, а выполняет только текстовые подстановки. В свою очередь, Ассемблер обрабатывает исходный текст, не зная, написан тот или иной оператор программистом "своей рукой" или сгенерирован Макропроцессором. По тому, насколько Препроцессор (Макропроцессор) и Транслятор (Ассемблер) "знают" о существовании друг друга, их можно разделить на три категории:
Основные термины, связанные с данными, обрабатываемыми Макропроцессором: макровызов (или макрокоманда), макроопределение, макрорасширение.
Макровызов или макрокоманда или макрос - оператор программы, который подлежит обработке Макропроцессором (как мы дальше увидим, Макропроцессор обрабатывает не все операторы, а только ему адресованные).
Макроопределение - описание того, как должна обрабатываться макрокоманда, макроопределение может находиться в том же исходном модуле, что и макрокоманда или в библиотеке макроопределений.
Макрорасширение - результат выполнения макровызова, представляющий собой один или несколько операторов языка Ассемблера, подставляемых в исходный модуль вместо оператора макровызова. Пример обработки макровызова показан на рисунке.

Оператор макровызова в исходной программе имеет тот же формат, что и другие операторы языка Ассемблера: В нем есть метка (необязательно), мнемоника и операнды. При обработке исходного текста если мнемоника оператора не распознается как машинная команда или директива, она считается макрокомандой и передается для обработки Макропроцессору.
Макроопределение описывает, как должна обрабатываться макрокоманда. Средства такого описания составляют некоторый Макроязык. Для Макропроцессоров 1-й и 2-й категорий средства Макроязыка могут быть достаточно развитыми. Для Макропроцессоров 3-й категории средства Макроязыка могут быть довольно бедными, но в составе языка Ассемблера может быть много директив, применяемых в макроопределениях (возможно, - только в макроопределениях). В теле макроопределения могут употребляться операторы двух типов:
Поскольку макроопределение, обрабатывается перед трансляцией или вместе с ней, макрокоманда, определенная в исходном модуле, может употребляться только в этом исходном модуле и "не видна" из других исходных модулей. Для повторно используемых макроопределений обычно создаются библиотеки макроопределений. В некоторых системах (например, z/OS) макрокоманды обеспечивают системные вызовы и существуют богатейшие библиотеки системных макроопределений.
Самое очевидное применение макрокоманд - для сокращения записи исходной программы, когда один оператор макровызова заменяется на макрорасширение из двух и более операторов программы. В некоторых случаях макрорасширение может даже содержать и единственный оператор, но просто давать действию, выполняемому этим оператором более понятную мнемонику. Но возможности Макропроцессора гораздо шире. Так, одна и та же макрокоманда с разными параметрами может приводить к генерации совершенно различных макрорасширений - и по объему, и по содержанию.
Отмена изменений в Реестре
Отмена изменений в РеестреУчет изменений, сделанных в текущем сеансе работы Norton Registry Editor, ведется на вкладке Undo (Отмена) информационной панели главного окна. Данные представлены в виде двух столбцов: Action (Действие) и Description (Описание). Для отмены изменений можно воспользоваться командой Edit>Undo (Правка>Отмена) или клавиатурной комбинацией CTRL+Z. Возможна только последовательная отмена, начиная с самого последнего изменения.
Для отмены действий, произведенных вне текущего сеанса, можно воспользоваться журналом изменений. Необходимые данные находятся на вкладке Tracker History (Журнал снимков). Кнопка Launch Registry Tracker (Запуск Registry Tracker) на этой вкладке позволяет запустить эту программу для совместной работы редактором Norton Registry Editor. В отличие от вкладки Undo (Отмена) эти данные сохраняются не только в текущем сеансе работы редактора Реестра, а зависят от параметров ведения журнала, заданных в программе Norton Registry Tracker.
Переключатель с тремя положениями
| переключатель с тремя положениями: Perform all Norton WinDoctor tests (recommended) - Выполнение всех тестов (рекомендуется); Let me choose which tests to run - Выбрать выполняемые тесты самостоятельно; View Repair History and (optionally) undo changes - Просмотр журнала выполненных работ и выборочная отмена внесенных изменений). |
Если выбрать второй вариант -
Перемещенне в Настраивающем Загрузчике
Перемещенне в Настраивающем Загрузчике.Принятые в Настраивающих Загрузчиках методы позволяют легко реализовать настройку реальных адресов, заданных относительно начала программы. Сущность метода перемещения состоит в том, что с каждым словом кода программы (размер слова обычно равен размеру реального адреса) связывается "бит перемещения". Значение этого бита 0/1 является признаком неперемещаемого/перемещаемого слова. Если слово является неперемещаемым, оно оставляется Загрузчиком без изменений. Если слово является перемещаемым, то к значению в слове прибавляется стартовый адрес модуля в оперативной памяти. Биты перемещения могут упаковываться - например, описание 8 слов в одном байте.
Переносимый машинный язык
Переносимый машинный языкМакросредствами может быть обеспечен полнофункциональный набор команд некоторой виртуальной машины. Программа пишется на языке этой виртуальной машины. Для разных платформ создаются библиотеки макроопределений, обеспечивающие расширение макровызовов в команды данной целевой платформы. Программа, таким образом, становится переносимой на уровне исходного текста. Поскольку макроопределение может быть построено так, чтобы генерировать неизбыточный код для каждого конкретного вызова, программа на языке виртуальной машины не будет уступать в эффективности программе, сразу написанной на языке целевого Ассемблера.
Performance
Performance -По умолчанию в программе включен
| По умолчанию в программе включен режим проверки физической поверхности диска, однако выполнять ее при каждой проверке нет необходимости. Для отключения этого режима на вкладке Surface Test (Проверка поверхности) сбросьте флажок Enable surface test (Разрешить проверку поверхности). Если же проверка поверхности необходима (например, для гибких дисков), то счетчиком Repetitions (Повторения) можно задать число тестовых проходов. Если отметить Continuous (Непрерывно), то тест поверхности будет выполняться в бесконечном цикле. Переключатель Type of test (Тип проверки) имеет положения: |
| · | Normal test (Обычная проверка); |
| · | Thorough test (Полная проверка). |
Переключатель What to Test (Что проверять) имеет положения:
| · | Entire Disk Area (Всю поверхность); |
| · | Area Used by Files (Область занятую файлами). |
Флажок
Поиск записей в Реестре
Поиск записей в РеестреПосле установки Norton Utilites
После установки Norton Utilites 2002 на рабочем столе появляется значок Norton Utilites Integraror, предоставляющий доступ к оболочке, из которой можно вызвать любую программу пакета.
Пакет Norton Utilites 2002 содержит четыре группы, в каждую из которых входят служебные программы. Любую из этих программ можно вызвать как из окна Интегратора (Norton Utilites Integraror), так и из Главного меню.
Ниже приведено их краткое описание.
Повышение производительности (Optimize Performance)
Предложения языка Ассемблера
Предложения языка АссемблераПредложения языка Ассемблера описывают команды или псевдокоманды (директивы). Предложения-команды задают машинные команды вычислительной системы; обработка Ассемблером команды приводит к генерации машинного кода. Обработка псевдокоманды не приводит к непосредственной генерации кода, псевдокоманда управляет работой самого Ассемблера. Для одной и той же аппаратной архитектуры м.б. построены разные Ассемблеры, в которых команды будут обязательно одинаковые, но псевдокоманды м.б. разные.
Во всех языках Ассемблеров каждое новое предложение языка начинается с новой строки. Каждое предложение, как правило, занимает одну строку, хотя обычно допускается продолжение на следующей строке/строках. Формат записи предложений языка м.б. жесткий или свободный. При записи в жестком формате составляющие предложения должны располагаться в фиксированных позициях строки. (Например: метка должна располагаться в позициях 1-8, позиция 9 - пустая, позиции 10-12 - мнемоника команды, позиция 13 - пустая, начиная с позиции 14 - операнды, позиция 72 - признак продолжения). Обычно для записи программ при жестком формате создаются бланки. Жесткий формат удобен для обработки Ассемблером (удобен и для чтения). Свободный формат допускает любое количество пробелов между составляющими предложения.
В общих случаях предложения языка Ассемблера состоят из следующих компонент:
Метка или имя является необязательным компонентом. Не во всех языках Ассемблеров эти понятия различаются. Если они различаются (например, MASM), то метка - точка программы, на которую передается управление, следовательно, метка стоит в предложении, содержащем команду; имя - имя переменной программы, ячейки памяти, следовательно, имя стоит в предложении, содержащем псевдокоманду резервирования памяти или определения константы. В некоторых случаях метка и имя могут отличаться даже синтаксически, так, в MASM/TASM после метки ставится двоеточие, а после имени - нет.
Однако, физический смысл и метки, и имени - одинаков, это - адрес памяти. Во всех случаях, когда Ассемблер встречает в программе имя или метку, он заменяет ее на адрес той ячейки памяти, к которую имя/метка именует. Правила формирования имен/меток совпадают с таковыми для языков программирования. В некоторых Ассемблерах (HLAM S/390) не делается различия между меткой и именем.
В языке должны предусматриваться некоторые специальные правила, позволяющие Ассемблеру распознать и выделить метку/имя, например:
Мнемоника - символическое обозначение команды/псевдокоманды.
Операнды - один или несколько операндов, обычно разделяемые запятыми. Операндами команд являются имена регистров, непосредственные операнды, адреса памяти (задаваемые в виде констант, литералов, символических имен или сложных выражений, включающих специальный синтаксис). Операнды псевдокоманд м.б. сложнее и разнообразнее.
Комментарии - любой текст, который игнорируется Ассемблером. Комментарии располагаются в конце предложения и отделяются от текста предложения, обрабатываемого Ассемблером, каким-либо специальным символом (в некоторых языках - пробелом). Всегда предусматривается возможность строк, содержащих только комментарий, обычно такие строки содержат специальный символ в 1-й позиции.
Preventative maintenance
Preventative maintenance(Профилактические мероприятия)
К профилактическим мероприятиям относится контроль за необходимостью своевременного обновления аварийного комплекта, а также за наличием свободного места на жестком диске. В случае необходимости запускается программа Rescue для обновления аварийного комплекта.
После того как вы выбрали необходимые действия программы Norton System Check, нажмите кнопку Далее. Будут произведены проверки, результат которых отразится в окне Norton System Check. Интерфейс и способы работы в этом окне полностью аналогичны окну программы Norton WinDoctor, поэтому за более подробной информацией перейдите в соответствующий раздел. Перейти>>
Присваивание значений переменным макроопределения
Присваивание значений переменным макроопределенияПрисваивание может производиться оператором вида: имя_переменной SET выражение или имя_переменной = выражение
Выражения, допустимые при присваивании, могут включать в себя имена переменных и параметров макроопределения, константы, строковые, арифметические и логические операции, функции. Основной тип операций - строковые (выделение подстроки, поиск вхождения, конкатенация. etc.), так как обработка макроопределения состоит в текстовых подстановках. Строковые операции обычно реализуются в функциях. Однако, в некоторых случаях может потребоваться выполнение над переменными макроопределения операций нестрокового типа. Как обеспечить выполнение таких операций? Можно предложить два варианта решения этой проблемы:
Как правило, операции присваивания могут применяться к параметрам макроопределения точно так же, как и к переменным макроопределения.
Problems)
Problems) | Repair All - Исправить все |
Программа Norton Disk Doctor состоит
Программа Norton Disk Doctor состоит из двух независимых компонентов: для Windows и для DOS. По существу они дублируют стандартную служебную программу Проверка диска для Windows и системную программу ScanDisk для DOS. Особенностью Norton Disk Doctor является возможность самостоятельного определения параметров жесткого диска (число цилиндров, секторов, объем), которые сравниваются с данными, хранящимися в энергонезависимой памяти CMOS. Благодаря этому исключаются ошибки, связанные с неправильным заданием параметров жесткого диска при настройке BIOS.
Перед применением этой программы прочтите раздел Внимание!
Программа Norton system Check
Программа Norton system Check предназначена для комплексной проверки операционной системы. По существу она объединяет в единой оболочке проверки, выполняемые четырьмя компонентами: Norton Disk Doctor, Norton WinDoctor, Speed Disk и Rescue.
Программа Norton WinDoctor представляет
Программа Norton WinDoctor представляет собой мощнейшее средство для поддержания в порядке операционной системы. Сложный механизм работы современной операционной системы не позволяет однозначно трактовать ее состояние как "исправное" или "неисправное". Однако имеется ряд ключевых моментов, которые должны безусловно соблюдаться. Например для работы приложения должны присутствовать все необходимые файлы, на которые имеются ссылки, для всех ярлыков должны присутствовать объекты, на которые они указывают, и т.д. Поиском заведомых несоответствий и занимается программа Norton WinDoctor.
Даже если вы только что установили заново операционную систему и все приложения, будьте уверены - для Norton WinDoctor найдется работа! Программа Norton WipeInfo предназначена
Программа Norton WipeInfo предназначена для обеспечения режима секретности хранения данных и выполняет не только обычное удаление файлов, но и фактическое уничтожение информации, сохранившейся после удаления файлов и папок путем записи новых данных поверх удаленных файлов.
Существует три степени удаления файлов. Первая степень - удаление файла в Корзину. При этом файл вообще не удаляется из файловой структуры и доступен в любое время. Вторая степень (уничтожение) - удаление файла из Корзины или минуя Корзину. При этом файл удаляется только из файловой структуры, то есть логически. Физически он остается на жестком диске, но первый символ имени файла заменяется специальным кодом. Для операционной системы это означает, что сектора, занимаемые, можно считать свободными. До тех пор, пока в эти сектора не произведена новая запись, файл нетрудно восстановить (изменив обратно первый символ имени), чем и занимаются программы восстановления удаленных файлов. Третья степень (стирание) предусматривает не только уничтожение файла, но и заполнение данных в его секторах случайными числами. Программа Rescue предназначена
Программа Rescue предназначена для создания аварийного комплекта на гибких дисках, а также на Zip-носителях или Jaz-накопителях.
Программа System Information предназначена
Программа System Information предназначена для получения информации по ключевым компонентам компьютера и его периферийных устройств.
Программа UnErase Wizard служит для восстановления удаленных файлов
Программа UnErase Wizard служит для восстановления удаленных файлов.
Программы и программное обеспечение
Программы и программное обеспечение| Определение (ГОСТ) | Программа - это данные, предназначенные для управления конкретными компонентами системы обработки информации (СОИ) в целях реализации определенного алгоритма. |
Определения даются по: ГОСТ 19781-90. Обеспечение систем обработки информации программное. Термины и определения. - М.:Изд-во стандартов, 1990.
Обратить внимание: программа - это данные. Один из основных принципов машины фон Неймана - то, что и программы, и данные хранятся в одной и той же памяти. Сохраняемая в памяти программа представляет собой некоторые коды, которые могут рассматриваться как данные. Возможно, с точки зрения программиста программа - активный компонент, она выполняет некоторые действия. Но с точки зрения процессора команды программы - это данные, которые процессор читает и интерпретирует. С другой стороны программа - это данные с точки зрения обслуживающих программ, например, с точки зрения компилятора, который на входе получает одни данные - программу на языке высокого уровня (ЯВУ), а на выходе выдает другие данные - программу в машинных кодах.
| Определение (ГОСТ) | Программное обеспечение (ПО) - совокупность программ СОИ и программных документов, необходимых для их эксплуатации |
Существенно, что ПО - это программы, предназначенные для многократного использования и применения разными пользователями. В связи с этим следует обратить внимание на ряд необходимых свойств ПО.
Появление ошибок любого уровня не должно приводить к краху системы. Ошибки должны вылавливаться диагностироваться и (если их невозможно исправить) превращаться в корректные отказы.
Системные структуры данных должны сохраняться безусловно.
Сохранение целостности пользовательских данных желательно.
Во всех случаях требуется тщательное структурирование ПО и носителем информации о структуре ПО должна быть программная документация.
Адаптация во многих случаях м.б. передоверена пользователю - при тщательной отработке и описании сценариев инсталляции и настройки.
Исправление ошибок требует развитой сервисной службы, собирающей информацию об ошибках и формирующей исправляющие пакеты.
Модификация предполагает изменение спецификаций на ПО. При этом, как правило, должны поддерживаться и старые спецификации. Эволюционное развитие ПО экономит вложения пользователей.
Properties (Свойства) предназначенная
Properties (Свойства), предназначенная для настройки датчика. На правой панели Launch Application (Запуск приложений) могут быть представлены средства запуска программ, относящихся к параметрам, контролируемым данным датчиком. Например, для данного датчика это программы Norton Disk Doctor и Image.Properties>Fragmentation Report
Properties>Fragmentation Report (Свойства>Cтепень фрагментации). | В открывшемся окне на левой панели представлено дерево папок диска, а на правой - содержимое выбранной папки. В процентах указана степень фрагментации для каждого файла. |
Propeties>Options (Свойства>Настройки)
Propeties>Options (Свойства>Настройки). В открывшемся окне Options for Speed Disk имеются три вкладки.Работа с закладками
Работа с закладкамиЗакладки удобны для быстрого перехода к нужным записям в Реестре или в файлах инициализации. С трудом разыскав один раз то, что нужно, в следующий раз вы сможете легко вернуться к этому месту, если вы поставили закладку.
Чтобы установить закладку в нужном месте, необходимо на левой панели главного окна программы выбрать объект, щелкнуть по нему правой кнопкой мыши и в появившемся контекстном меню выбрать пункт Bookmark This (Создать закладку). Можно также воспользоваться кнопкой Bookmark (Закладка) на панели инструментов. Закладки отображаются на вкладке Bookmarks информационной панели. По двойному щелчку можно быстро перейти в нужное место. При завершении работы с программой закладки сохраняются автоматически и будут доступны в последующих сеансах работы. Удаляют имеющуюся закладку щелчком на кнопке Remove Bookmarks (Удалить закладку) на панели инструментов или командой Remove (Удалить) в контекстном меню закладки.
Для разных задач удобно иметь разные наборы закладок. Для этого можно сохранить текущий набор закладок командой Bookmarks>Save Bookmarks (Закладки>Сохранить закладки). Файлы закладок имеют расширение .nbk и могут быть загружены командой Bookmarks>Load Bookmarks (Закладки>Загрузить закладки).
Кроме закладок для каждого раздела реестра можно также создать ярлык. Для этого щелкните правой кнопкой мыши на требуемом разделе и в контекстном меню выберите команду Make Shortcut (Создать ярлык). Как и закладки, ярлыки позволяют по двойному щелчку быстро переходить к нужным разделам. Ярлыки, в отличие от закладок, отображаются не на информационной вкладке, а прямо в корневом уровне дерева разделов. они также сохраняются при последующем запуске программы.
Работа в фоновом режиме
Работа в фоновом режимеПоскольку процедура дефрагментации занимает значительное время, её можно выполнять в фоновом режиме. Порядок действий следующий: запустить Speed Disk, затем свернуть окно программы - на панели индикации рядом с часами появится значок программы, свидетельствующий о работе в фоновом режиме. Процедура дефрагментации будет неизбежно прерываться из-за записи на диск, что намного увеличит время операции.
При работе в фоновом режиме используются естественные перерывы в работе. На вкладке Advanced можно задать параметры работы в фоновом режиме.
Recycle Bin
Recycle Bin | Открывать по двойному щелчку: UnErase Wizard - Мастер восстановления файлов Recently deleted files - Недавно удаленные файлы All Protected files - Все защищенные файлы Standard Recycle Bin - Стандартную Корзину Title - Название значка Show Norton Protection status - Отображать состояние защиты Enable/Contains protected files - Включено/Содержит защищенные файлы Enable/No files protected - Включено/Нет защищенных файлов Disabled - Выключено |
На этой вкладке можно установить флажок Show Norton Protection status (Отображать состояние защиты) - тогда значок корзины будет наглядно показывать состояние защиты и наличие защищенных файлов.
В поле Title (Название) можно ввести новое название значка.
В поле Double-clicking item opens (Открывать двойным щелчком) можно установить режим открытия корзины.
Если вы предпочитаете по двойному щелчку на значке Корзины открывать Мастер восстановления файлов, можете пойти еще дальше и вообще запретить использование стандартной Корзины, что сэкономит место на жестком диске. Для этого в диалоговом окне свойств Корзины на вкладке Глобальные установите флажок Уничтожать файлы сразу после удаления, не помещая их в Корзину. Если не ограничивать временной промежуток с помощью флажка Pupge protected files after ... days (Снимать защиту через ... дней), то вскоре все свободное пространство жесткого диска будет представлять собой одну большую защищенную корзину. В то же время, все это пространство всегда будет доступно для записи. Со временем, когда свободное пространство диска израсходуется полностью, начнется перезапись самых старых файлов, имеющих защиту Norton Protection. Registry Keys
Registry Keys(Разделы реестра) задаются разделы Реестра, подлежащие сканированию. По умолчанию задано сканирование раздела HKEY_LOCAL_MACHINE\SOFTWARE и всех его подразделов. Задать сканирование выбранного раздела можно щелчком на кнопке Track Key (Сканировать раздел). Щелчок на кнопке Track Subtree (Сканировать подразделы) задает сканирование всех вложенных разделов. Кнопки Exclude Key (Исключить раздел) и Exclude Subtree (Исключить подразделы) предназначены для выборочного ограничения области сканирования. Кнопкой Clear Key (Сброс раздела) можно полностью отменить сканирование выбранного раздела.
В целом работу программы Norton Registry Tracker можно оценить так: "Добросовестная, но тупая и медлительная". Снимки выполняются очень долго, кроме того они повторяются при малейших изменениях системной информации. Специалисты Symantec Corporation рекомендуют использовать эту программу для приведения системы в исходное состояние в случае неудачной инсталляции нового приложения. Надо заметить, что применение программы Norton Registry Tracker для этих целей - не лучший вариант. Фиксируя изменения, происходящие в системе, она может несколько раз прерывать процесс инсталляции, надолго затормаживая компьютер для выполнения очередного снимка. А при восстановлении изменений Norton Registry Tracker не обращает внимания на остающиеся программные папки и файлы. Поэтому для этих целей рекомендуется использовать специальные программы-деинсталляторы. Регулярное создание образа диска
Регулярное создание образа диска дает хорошие шансы для восстановления данных на жестком диске. Однако, чтобы этой возможностью можно было воспользоваться, необходимо заранее подготовить специальный аварийный комплект программных средств. Подробнее>>
Repair Ремонт Undo Отмена ремонта
Repair - Ремонт
Undo - Отмена ремонта
Problems - Неисправности
Advanced - Дополнительно
History - Хронология ремонта
Scan - Сканирование
Details - Подробно
При щелчке на кнопке Details окно со списком неисправностей разделяется на две части: в верхней части перечислены обобщенные сведения о неисправностях, объединенные в группы, в нижней части отображаются все конкретные неисправности по каждой группе.
Если вы щелкните на кнопке Repair All, то произойдет исправление всех найденных неисправностей в автоматическом режиме. Безопасность этого метода обеспечивается тем, что все автоматические действия программы тщательно фиксируются в журнале выполненного ремонта и могут быть впоследствии отменены.
Можно выполнить выборочный ремонт. Для этого выделите в списке неисправностей один или несколько элементов и нажмите кнопку Repair. В этом случае появится окно Repair Solutions (Советы по ремонту), в котором вы можете выбрать способ устранения неисправности.
Другой метод исправления состоит в использовании контекстного меню. При щелчке на элементе в верхней половине списка откроется контекстное меню, содержащее два пункта.
| При выборе первого варианта откроется диалоговое окно Automated Repair, в котором будет предложен выбор: |
| · | Let WinDoctor pick the best solution and automatically repair the problem - Автоматически выбирать лучшее решение для исправления. |
| · | Allow me to choose the solution to fix this problem - Самостоятельно принимать решение. |
В первом случае произойдет исправление неисправности в автоматическом режиме.
Во втором случае по каждой проблеме будет открываться окно Repair Solutions (Советы по ремонту), в котором вы самостоятельно сможете выбрать способ устранения неисправности. На первом месте (Solution 1) всегда располагается вариант, который Norton WinDoctor считает наиболее предпочтительным.
Для выполнения ремонта возможно также использование контекстного меню нижней части окна Norton WinDoctor. Оно содержит два пункта:
| · | Repair Selected Problem... (Исправление выделенной неисправности); |
| · | Ignore Selected Problem (Игнорирование выделенной неисправности) |
Первая команда вызывает уже знакомое нам окно Repair Solutions (Советы по ремонту), в котором вы можете выбрать способ устранения неисправности.
Команда Ignore Selected Problem позволяет "спрятать" неисправность. При этом проигнорированная неисправность исчезнет из списка. Если вы захотите увидеть полный список, то откройте меню View (Вид) и выберите пункт Show Ignored Problems (Показать игнорированные неисправности).
Rescue на панели инструментов Работа программы
Rescue на панели инструментов.(Режим
(режимSensor Appearance
Sensor Appearance(Оформление датчика) позволяет настроить внешний вид датчиков. В раскрывающемся списке Scheme (Схема) можно выбрать одну из заранее заготовленных схем оформления. Размеры датчика задают движками. Кнопками Color (Цвет) и Font (Шрифт) можно изменить параметры объектов, перечисленных в раскрывающемся списке Item (Объект). Файл фонового рисунка задают в поле Bitmap Background (Фоновый рисунок).
Сетевые датчики
Сетевые датчикиInternet Packet Turnaround (Скорость пакетов Интернет). Датчик отправляет сигнал на заданный узел Интернета и замеряет время до получения ответного сигнала. Чем меньше замеренное значение в милисекундах, тем выше скорость связи между выбранным узлом и компьютером. Датчик извещает о наступлении наиболее благоприятного периода для связи с выбранным узлом. С помощью нескольких датчиков можно следить за несколькими узлами одновременно.
Internet Speedometer (Скорость Интернет). Этот датчик, как и предыдущий, показывает скорость связи с заданным узлом Интернета. Датчик замеряет время до получения ответного сигнала от заданного узла. Меньшая величина времени задержки означает более высокую скорость передачи. Сигнал этого датчика может уведомлять вас о том, что скорость передачи неприемлемо низка.
Network Reads Throughput, IPX (Скорость чтения в сети). Датчик замеряет быстродействие получения данных в сетях Novell NetWare. Он помогает оценить производительность работы сетевого адаптера и другого сетевого оборудования.
Network Writes Throughput, IPX (Скорость записи в сети). Датчик замеряет быстродействие записи данных в сетях Novell NetWare. Он помогает оценить производительность работы сетевого адаптера и другого сетевого оборудования.
Show disk map during surface test
Show disk map during surface test (Отображать карту диска во время проверки поверхности) открывает дополнительное окно, наглядно отображающее ход проверки.Show Map (Показать карту диска)
Show Map (Показать карту диска), то нам будет представлена подробная информация о различных категориях файлов. Подробную расшифровку этих данных можно получить щелчком на кнопке Legend.Процесс дефрагментации начинается после нажатия кнопки
Show Statistics (Отображать окно
Show Statistics (Отображать окно статистики) откроется окно Comparison Statistics (Статистика сравнения), показывающее результаты сравнения (стрелка указывает на более новый файл): |
| · | Lines Added (Добавлены строки); |
| · | Lines Moved (Перемещены строки); |
| · | Lines Deleted (Удалены строки) |
При сравнении INI-файлов щелчком на кнопке INI Mode (Режим INI) можно для удобства включить специальный режим, при котором происходит группировка строк по разделам и их сортировка в алфавитном порядке.
При просмотре больших файлов с незначительными изменениями можно скрыть одинаковые строки щелчком на кнопке Differences Only (Показывать только отличия).
Кнопкой Edit Text (Редактировать текст) можно вызвать режим непосредственного редактирования любого из сравниваемых файлов. Редактирование выполняется в стандартной программе Блокнот.
Щелчком на кнопке Search (Поиск) вызывается диалоговое окно, с помощью которого удобно искать различия или совпадения.
| Переключатель Find (Искать) определяет, что именно требуется найти: |
| · | Matching Blocks (Совпадающие фрагменты); |
| · | Non Matching Blocks (Отличающиеся фрагменты); |
| · | Text (Текст). |
В последнем случае будет найден конкретный текст, совпадение или отличие которого требуется установить. Текст вводится в поле Text (Текст).
Если при сравнении двух файлов изменения, присутствующие в новой версии, вас не устраивают, можно тут же отказаться от них. Для этого надо выделить эти строки в новой версии файла и дать команду Options>Undo Selected Changes (Параметры>Отменить выделенные изменения). При этом открывается окно, в котором предлагается отредактированный вариант. Кнопкой Save (Сохранить) можно сохранить его или создать новую редакцию файла с помощью кнопки Save As (Сохранить как). Если сравниваются файлы .REG, предложенный вариант можно тут же внести в Реестр щелчком на кнопке Apply To Registry (Внести в реестр).
Система прерываний
Система прерыванийЯвляется самым сложным для моделирования компонентом. Трудность состоит в том, что прерывания поступают асинхронно, без привязки к выполнению программы. Следовательно, прерывания должны "зарождаться" где-то вне собственно выполняемой программы. При выполнении Интерпретатора в пошаговом режиме прерывания могут задаваться командами, вводимыми человеком-оператором. Более универсальным является прием, предполагающий создание в отдельном файле "программы поступления прерываний". Каждый "оператор" этой "программы" содержит идентификатор типа прерывания и время (модельное) поступления прерывания. Эти "операторы" должны быть упорядочены по возрастанию времен поступления. Поскольку ВС обладают свойством непрерываемости команд, условие поступления прерывания может проверяться только после окончания обработки очередной команды. Действия по прерыванию определяются характеристиками конкретной ВС. Как правило, они включают в себя запоминание текущего значения регистров состояния и счетчика адреса и занесение в счетчик адреса адреса программной секции обработки прерывания данного типа. Отладке программ, предусматривающих обработку внешних прерываний, усложняется многократно, так как при этом должно быть предусмотрено поступление внешних прерываний во все возможные (и невозможные!) моменты выполнения.
Системное программирование
Системное программирование| Определение (ГОСТ) | Системная программа - программа, предназначенная для поддержания работоспособности СОИ или повышения эффективности ее использования. |
| Определение (ГОСТ) | Прикладная программа - программа, предназначенная для решения задачи или класса задач в определенной области применения СОИ. |
В соответствии с терминологией, системное программирование - это процесс разработки системных программ (в т.ч., управляющих и обслуживающих).
С другой стороны, по определению Гегеля система - единое целое, состоящее из множества компонентов и множества связей между ними. Тогда системное программирование - это разработка программ сложной структуры.
Эти два определения не противоречат друг другу, так как разработка программ сложной структуры ведется именно для обеспечения работоспособности или повышения эффективности СОИ.
Зафиксированное в ГОСТ подразделение ПО на системное и прикладное является до некоторой степени устаревшим. Сегодняшнее деление предусматривает по меньшей мере три градации ПО:
Промежуточное ПО (middleware) мы определяем как совокупность программ, осуществляющих управление вторичными (конструируемыми самим ПО) ресурсами, ориентированными на решение определенного (широкого) класса задач. К такому ПО относятся менеджеры транзакций, серверы БД, серверы коммуникаций и другие программные серверы. С точки зрения инструментальных средств разработки промежуточное ПО ближе к прикладному, так как не работает на прямую с первичными ресурсами, а использует для этого сервисы, предоставляемые системным ПО. С точки зрения алгоритмов и технологий разработки промежуточное ПО ближе к системному, так как всегда является сложным программным изделием многократного и многоцелевого использования и в нем применяются те же или сходные алгоритмы, что и в системном ПО.
Современные тенденции развития ПО состоит в снижении объема как системного, так и прикладного программирования. Основная часть работы программистов выполняется в промежуточном ПО. Снижение объема системного программирования определено современными концепциями ОС, объектно-ориентированной архитектурой и архитектурой микроядра, в соответствии с которыми большая часть функций системы выносится в утилиты, которые можно отнести и к промежуточному ПО. Снижение объема прикладного программирования обусловлено тем, что современные продукты промежуточного ПО предлагают все больший набор инструментальных средств и шаблонов для решения задач своего класса.
Значительная часть системного и практически все прикладное ПО пишется на языках высокого уровня, что обеспечивает сокращение расходов на их разработку/модификацию и переносимость.
Системное ПО подразделяется на системные управляющие программы и системные обслуживающие программы.
| Определение (ГОСТ) | Управляющая программа - системная программа, реализующая набор функций управления, который включает в себя управление ресурсами и взаимодействие с внешней средой СОИ, восстановление работы системы после проявления неисправностей в технических средствах. |
| Определение (ГОСТ) | Программа обслуживания (утилита) - программа, предназначенная для оказания услуг общего характера пользователям и обслуживающему персоналу СОИ. |
Управляющая программа совместно с набором необходимых для эксплуатации системы утилит составляют операционную систему (ОС).
Кроме входящих в состав ОС утилит могут существовать и другие утилиты (того же или стороннего производителя), выполняющие дополнительное (опционное) обслуживание. Как правило, это утилиты, обеспечивающие разработку программного обеспечения для операционной системы.
| Определение (ГОСТ) | Система программирования - система, образуемая языком программирования, компилятором или интерпретатором программ, представленных на этом языке, соответствующей документацией, а также вспомогательными средствами для подготовки программ к форме, пригодной для выполнения. |
Системные датчики
Системные датчикиСлужебная программа Speed Disk
Служебная программа Speed Disk служит тем же целям, что и стандартная служебная программа Дефрагментация диска, но обладает большими функциональными возможностями.
Сохранение содержимого Реестра
Сохранение содержимого РеестраВ системе Windows данные Реестра хранятся в двух файлах - user.dat и system.dat (оба имеют атрибут "скрытый"). Хотя данные Реестра в этих файлах имеют не текстовый формат, их можно сохранить в текстовом виде - такая операция называется экспортом. В результате экспорта создается специальный текстовый файл с расширением .REG. Возможна и обратная операция - импорт данных в реестр. Проще всего выполнить импорт двойным щелчком на файле с расширением .REG.
Неграмотное внесение изменений в системный Реестр может вывести из строя операционную систему. Чтобы застраховаться от неприятностей, следует воспользоваться резервным сохранением Реестра. В программе Norton Registry Editor возможно использование как текстового формата .REG для сохранения данных Реестра, так и файлов собственного двоичного формата .SRG. Работать с последними можно только в программе Norton Registry Editor. Эти файлы предназначены не для просмотра, а только для резервного сохранения разделов Реестра - они гораздо компактнее, чем текстовые файлы .REG.
Резервирование Реестра выполняют командой
Sort Entries (Сортировка объектов)
Sort Entries (Сортировка объектов). При дефрагментации можно расположить файлы внутри папок в определенном порядке, если установить флажок Sort folder entries (Сортировка объектов в папках). Можно использовать сортировку по одному из следующих критериев: Name (По имени), Extension (По расширению), Date (По дате), Time (По времени), Size (По размеру). Переключатель Sort Order (Порядок сортировки) имеет два положения: Ascending (Прямой порядок) и Descending (Обратный порядок). Дополнительно можно установить флажок Place sub folders first (В начале располагать вложенные папки).Speed Disk (Дефрагментация диска)
Speed Disk (Дефрагментация диска). Эта служебная программа аналогична по назначению стандартной служебной программе Дефрагментация диска, но превосходит её функционально.
Norton Optimization Wizard (Мастер оптимизации). Средство оптимизации системного реестра и размера файла подкачки Windows.
Поиск и устранение неисправностей (Find and Fix Problems)
Сравнение макросредств и подпрограмм
Сравнение макросредств и подпрограммИспользование макросредств во многом подобно использованию подпрограмм: в обоих случаях мы сокращаем запись исходного текста и создаем повторно используемые фрагменты кода. (Например, в C/C++ вызов псевдофункции неотличим от вызова функции.) Принципиальные различия между подпрограммами и макросредствами:
Общий итог сравнения: макросредства обеспечивают несколько большее быстродействие при несколько больших затратах памяти. Поэтому обычно макросредства применяются для оформления сравнительно небольших фрагментов повторяющегося кода.
Start Необходимо выделить под
Start. Необходимо выделить под эту процедуру достаточное количество времени, потому что дефрагментация диска может занять несколько часов.После запуска дефрагментации первым делом происходит обработка информации, полученной от операционной системы о том, как часто запускаются программы, изменяются файлы документов и т.п.
Этап работы программы можно определить по её строке состояния. Сразу после запуска дефрагментации там записано: Converting Application Start Data (Преобразование данных по запуску приложений), после начинается оптимизация папок (Optimizing folders), затем сортировка (Sorting). И только после завершения этих предварительных этапов начнется собственно перемещение файлов. Если вам необходимо прервать процесс, это можно сделать щелчком на кнопке Stop. Уже выполненная работа не пропадет даром - для завершения дефрагментации в следующий раз потребуется меньше времени.
Если в процессе дефрагментации будет сделана запись на диск, то весь процесс начнется заново. Start/Stop Начать/остановить дефрагментацию
| Start/Stop - Начать/остановить дефрагментацию Show/Hide Map - Показать/Скрыть карту диска Help - Помощь Propeties - Свойства Legend - Цветовая расшифровка Close - Закрыть |
Если щелкнуть по кнопке
Структурный Ассемблер
Структурный АссемблерВ виде макрокоманд могут быть реализованы операторы, близкие к операторам управления потоком вычисления в языках высокого уровня (условные операторы, ветвления, различные виды циклов). Известным примером такого расширения является язык Макроассемблера BCPL - предшественник языка C.
Структуры (базы) данных Ассемблера
Структуры (базы) данных Ассемблера
Структуры данных Макропроцессора
Структуры данных Макропроцессора
Таблица макроопределений, строго говоря, не таблица, а просто массив строк, в который записываются тексты всех макроопределений (от оператора MACRO до оператора MEND), найденных в обрабатываемом модуле.
Таблица имен макроопределений содержит имена макроопределений и указатель на размещение текста макроопределения в таблице макроопределений, как показано на рисунке.

Таблица глобальных переменных имеет такую структуру:

Все таблицы имеют переменный размер и заполняются в процессе работы.
Индекс уникальных меток - число, используемое для формирования уникальной части имен меток, встречающихся в макроопределениях
Для обработки каждого макровызова создаются:
Таблица параметров, содержащая информацию о параметрах макроопределения.
Таблица локальных переменных, содержащая информацию о локальных переменных макроопределения.
Структура этих таблиц - такая же, как и таблицы глобальных переменных, эти две таблицы могут быть объединены в одну таблицу параметров и локальных переменных.
Таблица меток макроопределения, структура которой:

Style
Style(Стиль) предназначена для выбора оформления индикатора. Выбор выполняют в раскрывающемся списке Type (Тип). Переменные параметры можно отображать с помощью цифрового индикатора Digital Counter (Цифровой) или с помощью графических индикаторов Bar (Линейный), Analog (Аналоговый), Histogram (Гистограмма), Graph (График), Speedometer (Секторная шкала), Wide Bar (Горизонтальная шкала), Tall Bar (Вертикальная шкала). Сводная информация о наличии ошибок или о выполнении различных операций обычно отображается индикатором Stoplight (Светофор).
В группе Sensor Size (Размер датчика) можно задать размер индикатора: Small (Малый) или Large (Большой). Если установить флажок Hidden (Скрытый), то индикатор не будет виден в окне Norton System Doctor, но будет продолжать контролировать заданный параметр.
В группе Sensor Scale для многих датчиков предусмотрен выбор единицы измерения. Предусмотрена также возможность инвертирования показаний, например для пространства жесткого диска можно отображать как размер свободного пространства (Amount Free), так и обратный параметр - размер занятого пространства (Amount Used).
Связывание в Настраивающем Загрузчике
Связывание в Настраивающем Загрузчике.Проблема связывания в Настраивающем Загрузчике решается при помощи Вектора Переходов. Вектор Переходов включается в состав объектного модуля и содержит список всех внешних имен, к которым есть обращение в модуле с полем адреса для каждого имени. Вектор Переходов заполняется при обработке директив типа EXT (перечисления внешних имен). В команды программы, обращающиеся к внешним именам вставляется обращение к адресному полю соответствующего элемента Вектора Переходов с признаком косвенного обращение. (Косвенное обращение означает, что обращение идет не по адресу, который задан в команде, а по адресу, который записан в ячейке, адрес которой задан в команде.)
При загрузке в оперативную память Вектор Переходов загружается вместе с кодами программы и остается в памяти все время выполнения программы.
Когда Загрузчик компонует программу из нескольких объектных модулей, он "узнает" все фактические адреса входных точек и в Вектора Переходов тех модулей, которые обращаются к данной входной точке вставляет эти адреса. Обращение к внешней точке, таким образом, производится косвенное через Вектор Переходов.

System Information (Информация
System Information (Информация о системе). Программа, собирающая данные о программной части компьютерной системы: об используемой операционной системе, драйверах, устройствах ввода/вывода, мультимедийных компонентах и т.д.
Wipe Info (Мастер стирания данных). Служебная программа, обеспечивающая надежное уничтожение информации при удалении файлов с целью обеспечения высшей степени секретности.
Image (Образ диска). Создание образа диска для защиты служебной информации жесткого диска от уничтожения. Образ диска содержит копии таблицы разделов, загрузочных записей, таблиц расположения файлов.
Norton File Compare (Сравнение файлов). Служебная программа, предназначенная для сравнения файлов, имеющих текстовый формат (.BAT, .INI, .REG и т.п.). Имеет расширенные возможности для поиска различий, например выполняет синхронизацию строк, фиксирует изменение порядка следования записей и т.п.
Обслуживание реестра (Registry Management)
System
System -Тема 2 Ассемблеры
| Определение (не по ГОСТ) | Язык Ассемблера - система записи программы с детализацией до отдельной машинной команды, позволяющая использовать мнемоническое обозначение команд и символическое задание адресов. |
Поскольку в разных аппаратных архитектурах разные программно-доступные компоненты (система команд, регистры, способы адресации), язык Ассемблера аппаратно-зависимый. Программы, написанные на языке Ассемблера м.б. перенесены только на вычислительную систему той же архитектуры.
Программирование на языке Ассемблера позволяет в максимальной степени использовать особенности архитектуры вычислительной системы. До недавнего времени воспринималась как аксиома, что Ассемблерная программа всегда является более эффективной и в смысле быстродействия, и в смысле требований к памяти. Для Intel-архитектуры это и сейчас так. Но это уже не так для RISK-архитектур. Для того, чтобы программа могла эффективно выполняться в вычислительной среде с распараллеливанием на уровне команд, она д.б. определенным образом оптимизирована, т.е., команды д.б. расположены в определенном порядке, допускающим их параллельное выполнение. Программист просто не сможет покомандно оптимизировать всю свою программу. С задачей такой оптимизации более эффективно справляются компиляторы.
Доля программ, которые пишутся на языках Ассемблеров в мире, неуклонно уменьшается, прикладное программирование на языках Ассемблеров применяется только по недомыслию. Язык Ассемблера "в чистом виде" применяется только для написания отдельных небольших частей системного ПО: микроядра ОС, самых нижних уровней драйверов - тех частей, которые непосредственно взаимодействуют с реальными аппаратными компонентами. Этим занимается узкий круг программистов, работающих в фирмах, производящих аппаратуру и ОС. Зачем же нам тогда изучать построение Ассемблера?
Хотя разработка программ, взаимодействующих с реальными аппаратными компонентами, - редкая задача, в современном программировании при разработке прикладного, а еще более - промежуточного ПО довольно часто применяется технологии виртуальных машин. Для выполнения того или иного класса задач программно моделируется некоторое виртуальное вычислительное устройство, функции которого соответствуют нуждам этого класса задач. Для управления таким устройством для него м.б. создан соответствующий язык команд. (Широко известные примеры: MI AS/400, JVM.) Говоря шире, любую программу можно представить себе как виртуальное "железо", решающее конкретную задачу. (Конечный пользователь обычно не видит разницы между программой и аппаратурой и часто говорит не "мне программа выдала то-то", а "мне компьютер выдал то-то"). В некоторых случаях интерфейс программы м.б. удобно представить в виде системы команд, а следовательно, нужен соответствующий Ассемблер. (Это, конечно, относится не к программам "для чайников", а к инструментальным средствам программистов, системам моделирования и т.п.).
Тема 5 Кросссистемы
Исходная вычислительная система (ВС) - та ВС, на которой программа готовится к выполнению.Целевая ВС - та ВС, на которой программа выполняется.
Эти две ВС не обязательно совпадают. Макропроцессор, Ассемблер, Редактор Связей - программы, обрабатывающие данные. Ассемблер, например, получает на входе одни код (текст) и производит на выходе другой код (объектный модуль). При этом Ассемблер не рассматривает свой выходной код как команды именно своей ВС, это просто некоторые данные. Ничто не мешает нам сделать Ассемблер, на выходе которого будут генерироваться коды не той ВС, в которой работает Ассемблер, а некоторой другой ВС.
Системы подготовки программ, в которых исходная ВС отличается от целевой, называются кросс-системами.
Для чего может понадобиться кросс-система?
В простейшем случае процесс подготовки программы на кросс-системе аналогичен процессу их подготовки в однородной системе.

Загрузка и выполнение должна обязательно происходить на целевой системе, а предшествующие этапы (все или некоторые) могут быть перенесены на исходную систему. Любой из файлов-результатов выполнения очередного этапа подготовки может быть перенесен из исходной системы в целевую.
Однако, такая схема не в полной мере использует возможности кросс-системы. Важным этапом подготовки программ является их отладка. Отладка также может проводиться на кросс-системе (частично или полностью)

Для отладки программ на исходной ВС применяется программа-Интерпретатор. Интерпретатор является программной моделью целевой ВС, которая обеспечивает выполнение программ в кодах целевой ВС. Интерпретатор строится по принципу имитационной программной модели, это означает, что отдельные компоненты целевой ВС моделируются соответствующими компонентами программной модели, которые имитируют поведение реальных компонентов.
Если исходная ВС обладает большими вычислительными ресурсами, чем целевая ВС, то отладка на исходной ВС может быть более удобной и функционально более полной, чем на целевой ВС. Это, впрочем, относится и к тому случаю, когда исходная ВС не превосходит целевую по объему ресурсов. В таком случае для отладки программы все равно может быть выделено больше ресурсов (возможно, виртуальных), чем при ее выполнении.
Модель, на которой производится отладка, всегда является избыточной по ресурсам по сравнению с целевой средой выполнения. Избыточность модели позволяет выявить при отладке на ней такие ошибочные ситуации, которые трудно или вообще невозможно выявить при отладке в реальной среде. Примеры таких ситуаций:
Модель целевой вычислительной системы состоит из компонентов, моделирующих программно-доступные компоненты целевой ВС (т.е. такие, с которыми работают команды отлаживаемой программы) и включает в себя следующие составляющие:
Text Files
Text Files(Текстовые файлы) заданы системные файлы, имеющие текстовый формат. По умолчанию это файлы autoexec.bat, config.sys, system.ini, win.ini. Этот список можно корректировать кнопками Add (Добавить) и Remove (Удалить). Флажок Show EExclusion(Отображать исключения) приводит к индикации имеющихся исключений.
UnErase Wizard ·Из Главного меню
UnErase Wizard.| · | Из Главного меню (Пуск>Программы>Norton Utilites>UnErase Wizard). |
| · | Из оболочки Norton Utilites Integrator. |
UnErase Wizard (Мастер восстановления удаленных файлов)
UnErase Wizard (Мастер восстановления удаленных файлов).UnErase Wizard
UnErase Wizard | В стартовом окне предлагается предварительный выбор: Find recently deleted files (Поиск недавно удаленных файлов), к которым относятся 25 последних удаленных файлов); Find all protected files on local drives (Поиск всех защищенных файлов на локальных дисках), то есть всех файлов находящихся под защитой Norton Protection; Find any recoverable files matching your criteria (Поиск любых файлов, способных к восстановлению и отвечающих заданным критериям). К этой группе относятся любые файлы, восстановление которых еще возможно. |
При выборе первого пункта открывается список недавно удаленных файлов.
| Щелчок правой кнопкой мыши на файле открывает контекстное меню, которое содержит следующие команды: Quick View - просмотр содержимого файла; Recover - восстановление файла; Recover to - восстановление файла в другую папку; Delete - удаление, после чего файл теряет защиту Norton Protection; Properties - открывается окно свойств файла. |
Если щелкнуть правой кнопкой мыши на пустом месте в списке, то откроется другое контекстное меню.
| Show Unrecoverable Files - Показать невосстановимые файлы. Если отметить флажком этот пункт, то в списке появятся и те файлы, восстановить которые уже невозможно (их значки более бледные). Кроме того, это контекстное меню позволяет настроить отображение в списке файлов нужных столбцов данных: |
| · | Original Location (Исходное местоположение); |
| · | Date Deleted (Дата удаления); |
| · | Type (Тип файла); |
| · | Size (Размер файла); |
| · | Modified (Дата последнего изменения); |
| · | Created (Дата создания); |
| · | Accessed (Дата последнего открытия); |
| · | Attributes (Атрибуты); |
| · | Deleted by (Каким приложением удален); |
| · | Status (Возможность восстановления). |
Если в главном окне UnErase Wizard выбран пункт Find all protected files on local drives (Поиск всех защищенных файлов на локальных дисках), то также открывается окно со списком файлов, но содержащее все файлы, находящиеся под защитой Norton Protection.
При выборе третьего пункта в главном окне программы Find any recoverable files matching your criteria (Поиск любых файлов, способных к восстановлению и отвечающих заданным критериям), будет выполняться поиск всех файлов, пригодных к восстановлению, независимо от статуса защиты Norton Protection. В этом случае Мастер приступает к серии запросов, позволяющих выполнить поиск удаленного файла.
Запрос What is filename (Каково имя файла) допускает использование общепринятых подстановочных символов.
Следующий запрос What is the file type (Каков тип файла) позволяет сделать выбор любого из зарегистрированных в системе типов файлов.
Запрос What words are in the file (Какие слова встречаются в файле) может использоваться при поиске текстовых файлов. Можно уточнить условия поиска: Must contain at least one word (Должно содержаться любое из слов) или Main contain all the words (Должны содержаться все слова).
Запрос Where was the file located (Где файл размещался) позволит сузить зону поиска. Обратите внимание на флажок Look in subfolders (Просматривать вложенные папки).
Если вы не можете ответить на какой-либо из запросов Мастера, то переходите к следующему. По завершении запросов начинается поиск, результаты которого предстанут перед вами.
Таким образом, Мастер восстановления данных (UnErase Wizard) располагает внушительным арсеналом средств, предназначенных для восстановления потерянной информации.
Unerasefordos
Этот модуль применяют для восстановления жизненно важных файлов, удаленных по неаккуратности, небрежности или в результате вирусной атаки. При запуске программы из оболочки Rescue Disk Shell потребуется вставить в дисковод дискету NU Emergency Utilities Disk 1. После загрузки программы вы увидите окно, показанное на рисунке ниже. |
| В верхней части находится меню, доступ к которому открывается с помощью клавиш F9 или F10. В меню имеются команды смены диска, папки и настроек. При просмотре содержимого папки отображаются удаленные файлы и их параметры. |
В правом столбце Prognosis (Прогноз) приведена оценка шансов на удачное восстановление:
| · | excellent (отлично) - файл находится под защитой Norton Protection; |
| · | good (хорошо) - файл не имеет статуса защиты, но может быть восстановлен, так как поверх него еще не записан никакой другой файл; |
| · | poor (плохо) - скорее всего файл не может быть восстановлен, так как поверх него уже записан другой файл. |
Восстанавливают файл щелчком на кнопке UnErase (Восстановить). Если файл не имел статуса защиты Norton Protection придется вручную ввести первый символ его имени.
Уникальные метки
Уникальные меткиВ некоторых случаях операторы машинных команд, имеющихся в макроопределении, должны быть помечены, например, для того, чтобы передавать на них управление. Если применить для этих целей обычную метку, то может возникнуть ошибочная ситуация. Если метка в макроопределении имеет обычное имя, и в модуле данная макрокоманда вызывается два раза, то будет сгенерировано два макрорасширения, и в обоих будет метка с этим именем. Чтобы избежать ситуации неуникальности меток, в макроязыке создается возможность определять метки, для которых формируются уникальные имена. Обычно имя такой метки имеет тот же отличительный признак, который имеют параметры и переменные макроопределения. Каждую такую метку Макропроцессор заменяет меткой с уникальными именем.
Уникальное имя метки может формироваться формате, подобном следующему: &имя.nnnnnn где - nnnnnn - число, увеличивающееся на 1 для каждой следующей уникальной метки.
Другой возможный способ формирования, например: имя&SYSNDX где SYSNDX - предустановленное имя, имеющее числовое значение, начинающееся с 00001 и увеличивающееся на 1 для каждой следующей уникальной метки.
Следующие операторы Макроязыка влияют на последовательность обработки операторов макроопределения. В тех или иных Макропроцессорах имеется тот или иной набор таких операторов.
Условные блоки
Условные блокиВозможный формат оператора: IF условное_выражение операторы_макроопределения_блок1 ENDIF ELSE операторы_макроопределения_блок2 ENDIF
Если условное_выражение имеет значение "истина", обрабатываются операторы макроопределения от оператора IF до оператора ENDIF, иначе обрабатываются операторы макроопределения от оператора ESLE до оператора ENDIF. Как и в языках программирования блок ELSE - ENDIF не является обязательным.
Условные выражения описаны выше. Обычно предусматриваются специальные формы: IFDEF имя IFNDEF имя проверяющие просто определено или не определено данное имя.
Операторы условных блоков довольно часто являются не операторами Макроязыка, а директивами самого языка Ассемблера.
В процессе установки новых приложений
В процессе установки новых приложений происходит изменение системной информации: добавление динамических библиотек в папку \Windows, изменение системного реестра, файлов инициализации .INI и т.п. Программа Norton Registry Tracker автоматически делает "снимки" системных объектов, когда обнаруживает их изменение, а также предоставляет возможность вернуть систему в ее предыдущее состояние.
Verify Writes (Проверка записи)
Verify Writes (Проверка записи) приведет к увеличению продолжительности дефрагментации, однако гарантируется отсутствие сбоев, которые при этом могут произойти.Установка флажка Wipe Free Space (Зачистить свободное место) вызывает принудительное обнуление данных во всех кластерах образовавшегося в итоге свободного пространства. Этот флажок можно не устанавливать, если того не требуют соображения особой секретности, так как эта операция требует дополнительного времени. Кроме того, когда флажок сброшен, сохраняется возможность восстановления удаленных файлов с помощью Мастера восстановления UnErase Wizard.
Созданные настройки можно сохранить щелчком на кнопке Save (Сохранить).
Щелчок на кнопке Customize (Заказной метод) открывает диалоговое окно Customize Full Optimization (Заказной метод полной оптимизации).
Вкладка Advanced
Advanced | Вкладка Advanced позволяет задать время простоя жесткого диска, по истечении которого дефрагментация будет возобновлена. Это делается установкой счетчиков Begin after ... idle minutes and ... seconds. Флажок Watch communication ports (Ждать освобождения порта) устанавливают для устранения возможных конфликтов с программами факсимильной связи, находящимися в дежурном режиме. |
Вкладка Alarm
Вкладка Alarm(Сигнализация) служит для настройки параметров сигнализации. Применение сигнализации определяется установкой флажка Enabled (Разрешено). Флажок Show Trigger Level (Показать уровень срабатывания) позволяет отображать этот уровень на графическом индикаторе.
Движок Trigger Level (Уровень срабатывания) предназначен для задания уровня срабатывания сигнализации. В большинстве случаев возможен выбор единиц измерения уровня срабатывания с помощью раскрывающегося списка, а также прямой ввод параметров в текстовое поле.
С помощью переключателя Alarm Action (Выполняемые действия) можно задать реакцию на превышение уровня срабатывания:
| · | No Action (Без действий); |
| · | Display Alarm Message (Вывести предупреждающее сообщение); |
| · | Fix Automatically (Автоматически исправить). |
В последнем случае иногда можно скорректировать действия кнопкой Settings (Установки), с помощью которой выполняют настройку служебных программ, предназначенных для устранения обнаруженной неполадки.
Установив флажок Fix At (Исправить в) можно задать конкретное время выполнения процедуры.
С помощью флажка Play Sound (Воспроизведение звука) можно в качестве сигнализатора воспроизводить звуковой сигнал, для которого указывается путь доступа к звуковому файлу (/wav или .mid).
Вкладка General Программа Norton
Вкладка General | Программа Norton Disk Doctor может запускаться автоматически при загрузке Windows. Для этого необходимо установить флажок Start automatically with Windows. В поле Select drive(s) to diagnose необходимо флажками отметить диски, которые должны проверяться. В автоматическом режиме проверка поверхности не производится, независимо от установок на вкладке Surface Test (Проверка поверхности). При обнаружении повреждений файловой структуры программа может выполнить необходимые восстановительные работы (ремонт). Параметры ремонта настраиваются в поле Repair Options (Параметры ремонта). |
Вкладка Norton Protection
Вкладка Norton ProtectionВкладка Optimization На вкладке
Optimization | На вкладке Optimization (Оптимизация) задаются основные параметры оптимизации. В группе Optimization Method (Метод оптимизации) можно выбрать один из трех режимов оптимизации. Подробнее >> Флажок Optimization Swap File (Оптимизировать файл подкачки) желательно не сбрасывать, иначе работа Windows может замедлиться. Установка флажка Reserve Slack (Сохранить резерв) приводит к тому, что после каждой цветовой категории файлов сохраняется небольшое резервное пустое пространство, позволяющее некоторое время работать практически без увеличения фрагментации. |
Вкладка Surface Test
Вкладка Surface TestВкладка
ВкладкаВложенные макровызовы Вложенные макроопределения
Вложенные макровызовы. Вложенные макроопределения.Можно ли употреблять макроопределения внутри макроопределений? Можно ли употреблять макровызовы вызовы внутри макроопределений? Представленные выше алгоритмы делать этого не позволяют. Тем не менее, можно построить такие алгоритмы Макропроцессора, которые это позволять будут. Эти алгоритмы в любом случае будут довольно "затратными", то есть, требующими много ресурсов - процессорного времени и памяти. "Классические" алгоритмы, создававшиеся в условиях хронического дефицита памяти, были очень ограничены.
Внесение изменений в Реестр
Внесение изменений в РеестрИзменения в Реестр удобно вносить с помощью контекстного меню. Щелчок правой кнопки открывает контекстное меню. Раскрывающийся пункт меню New (Создать) позволяет создать:
| · | Key (Раздел); |
| · | String (Строковый параметр); |
| · | Numeric (Числовой параметр); |
| · | Binary (Двоичный параметр); |
| · | Expanded String (Расширенный строковый параметр); |
| · | Multi String (Мультистрока). |
Двойной щелчок на панели значений открывает диалоговое окно, в котором можно изменить значение параметра.
Время
ВремяДля значительного класса встроенных ВС время выполнение программы является принципиально важной ее характеристикой (например, бортовые системы управления должны работать в реальном времени). Важно понимать, что время выполнения программы на Интерпретаторе ни в коей мере не соответствует времени ее выполнения на реальной ВС. Более того, временные соотношения между выполнением различных частей программы на модели также не соответствуют соотношениям выполнения частой программы на реальном оборудовании. Поэтому время также является моделируемым компонентом. Моделью времени является целая переменная большой разрядности. В этой переменной на каждом шаге выполнения содержится число машинных тактов, выполненных с начала выполнения программы. Исходное значение этой переменной - 0, после выполнения каждой команды ее значение увеличивается на время выполнения данной команды (время выполнения может быть столбцом в таблице команд).
Вводвывод
Ввод-выводОперации ввода-вывода целевой ВС моделируются файловым вводом-выводом исходной ВС. Данные, которые целевая ВС вводит с внешнее устройство, читаются моделью из файла. Данные, которые целевая ВС выводит на внешнее устройство, записываются моделью в файл. Для каждого внешнего устройства удобно назначать свой файл. В частном случае это может быть файл клавиатуры или файл экрана. Данные в файл, имитирующий устройство ввода, должны быть занесены заранее. На вход Интерпретатора должна подаваться таблица соответствия файлов устройствам.
Ввод-вывод может быть синхронным или асинхронным. При синхронном вводе-выводе (например, через порты) операция ввода-вывода завершается вместе с завершением команды ввода-вывода. Моделирование такого ввода-вывода сложностей не представляет. При асинхронном вводе-выводе (КПДП, каналы ввода-вывода) команда ввода-вывода только запускает операцию ввода-вывода и заканчивается. Выполнение операции ввода-вывода далее происходит параллельно с выполнением команд программы, а об окончании ввода-вывода устройство сигнализирует прерыванием. И здесь "срабатывают" трудности, присущие моделированию системы прерываний. Одно из возможных решений - при инициализации операции ввода-вывода добавлять в программу поступления прерываний новый элемент, соответствующий прерыванию, которое поступит через какой-то интервал времени после текущего момента.
Особую сложность представляет собой моделирование ошибочных ситуаций ввода-вывода, эта проблема должна решаться для каждого прикладного случая, поэтому здесь не рассматривается.
Выдача сообщения
Выдача сообщенияПри возникновении ошибок или ситуаций, требующих предупреждения программисту в листинг должно выводиться сообщение. Если в результате ошибки программиста, написавшего макроопределение или макровызов будет сгенерирован неправильный код программы на языке Ассемблера, то эта ошибка будет выявлена только Ассемблером на этапе трансляции программы. Однако выгоднее выявлять ошибки не как можно более ранних этапах подготовки программы, в Макроязыке ошибочные ситуации (ошибки в параметрах и т.п.) могут быть выявлены при помощи условных операторов или блоков, а для выдачи сообщения об ошибке должен существовать специальный оператор Макроязыка. Формат такого оператора примерно следующий: MOTE код_серьезности,код_ошибки,сообщение_об_ошибке
код_серьезности - числовой код, определяющий возможность продолжения работы при наличии ситуации, вызвавшей сообщения. Должны индицироваться, как минимум, следующие ситуации:
код_ошибки - числовой код, служащий, например, для поиска развернутого описания сообщений и действий при его возникновении в документе "Сообщения программы"
сообщение_об_ошибке - текст, печатаемый в листинге
Взаимодействие с человекомоператором
Взаимодействие с человеком-операторомИнтерпретатор может выполняться в автоматическом или пошаговом режиме. В автоматическом режиме Интерпретатор моделирует выполнение команд программы без остановок до команды типа HALT или до точки останова. В точке останова оператор может вводить команды, управляющие действиями Интерпретатора и выбрать режим продолжения выполнения. В пошаговом режиме Интерпретатор после выполнения каждой команды программы останавливается и предоставляет оператору возможность вводить команды управления. Командами управления работой Интерпретатора могут быть:
Отображаться должны состояния и значения всех составляющих программной модели ВС: регистров (РОН, счетчика адреса, состояния), заданных участков памяти и их признаков, счетчика модельного времени, программы поступления прерываний и т.д. Отображаемые значения также должны быть доступны для изменений. Отметим, что для интерактивного отображения/изменения должны быть доступны также байты признаков памяти. Изменение содержимого регистра-счетчика адреса равносильно передачи управления в программе.
Точки останова могут задаваться в исходном для Интерпретатора файле и вводиться/изменяться в ходе интерактивной отладки. Могут быть предусмотрены остановы при:
Связь отладки с исходным текстом. Такая связь безусловно удобно и может быть осуществлена относительно несложно, если выход 1-го прохода Кросс-Ассемблера передается на вход Интерпретатора. Выход 1-го прохода связывает операторы исходного текста с адресами памяти. Таким образом, по значению счетчика адреса в каждый момент выполнения программы можно найти в выходе 1-го прохода соответствующий оператор исходного текста. Если на вход Интерпретатора подается также сформированная 1-ым проходом таблица символов, то есть возможность обращаться к переменным программы и к точкам передачи управления по символьным именам.
Можно ли обеспечить изменение прямо в ходе отладки исходного текста? Схема решения сводится к представленной на рисунке. В схеме остается только 1-й проход Кросс-Ассемблера. Выход его - исходный текст с разметкой адресов и таблица символов является основным входом Интерпретатора. Необходимость во 2-ом проходе Кросс-Ассемблера отпадает. В начале выполнения Интерпретатор должен построить модель памяти, в которой он размещает, однако, только данные программы, но не команды. При работе Интерпретатор повторяет многие действия 2-го прохода Кросс-Ассемблера, читает не коды, а исходные тексты и распознает команду не по коду операции, а по мнемонике, и интерпретирует операнды не по кодам, а по исходным текстам. Изменения в исходном тексте оператора программы должны автоматически реплицироваться в соответствующем операторе (только в одном операторе!) результата 1-го прохода, и тогда при следующем выполнении этого оператора будет моделироваться уже выполнение новой команды. Однако, поскольку в результате 1-го прохода каждый оператор уже привязывается к определенному адресу, возможность изменения должна ограничиваться тем, что длина новой команды обязательно равна длине старой команды. Более сложные изменения потребуют повторного выполнения 1-го прохода Кросс-Ассемблера.

Итоговая схема алгоритма функционирования Интерпретатора сводится к следующей:
| Назад | Оглавление |
| Каталог | Индекс раздела |
x
Welcometopic
|
|
|
|
|
Редактирование, скриншоты, адаптация к версии Norton Utilities 2002, компиляция в формат .CHM |
|
Горчаков Д.А. |
| |
|
Этот файл содержит материалы книги |
|
Симонович С.В., Евсеев Г.А., Алексеев А.Г. |
|
WINDOWS: Лаборатория мастера: Практическое руководство по эффективным приемам работы с компьютером. |
|
М.: АСТ-ПРЕСС: Инфорком-Пресс, 2001. |
|
Советую Вам приобрести эту книгу. Очень профессиональное и в то же время доступное изложение материала. Подробно описано более 40 популярных программ. |
Windows Settings
Windows Settings(Настройки Windows) с помощью переключателя Window Display (Отображение окна) можно задать режим отображения окна. Рядом расположена область предварительного просмотра, в которой можно наблюдать результаты настроек. В положении Docked (Пристыковано) окно стыкуется к одному из краев экрана (по умолчанию - сверху, но впоследствии его можно перетащить к любому краю). Установка флажка Auto Hide (Скрывать автоматически) приведет к скрытию окна в нерабочем состоянии. Окно всплывает при подведении указателя к краю экрана. В положении Normal (Обычное) можно установить следующие флажки:
| · | Show Title Bar (Отображать заголовок); |
| · | Show Symantec Logo (Отображать логотип); |
| · | Always on Top (Всегда сверху). |
Список Sensor Order (Порядок датчиков) позволяет управлять порядком расположения датчиков в окне с помощью кнопок Up (Вверх) и Down (Вниз).
Установка флажка Start automatically with Windows (Загружать вместе с Windows) приведет к запуску мониторинга сразу после загрузки операционной системы. Флажок Start Minimized (Запуск в свернутом состоянии) обеспечивает запуск программы в свернутом состоянии. При этом на панели индикации рядом с часами появляется ее значок в виде светофора.
Существует и другой способ включения режима автозагрузки Norton System Doctor - в окне Интегратора надо подать команду Options и на вкладке Startup Programs установить флажок Norton System Doctor.
Windows
Windows.Для выполнения поиска предназначена кнопка Find (Найти) на панели инструментов. Она открывает окно поиска.
| Строку для поиска вводят в поле |
Заголовок макроопределения
Заголовок макроопределенияМакроопределение должно как-то выделяться в программе, поэтому оно всегда начинается с заголовка.
Заголовок имеет формат, подобный следующему: имя_макрокоманды MACRO список формальных параметров имя_макрокоманды является обязательным компонентом. При макровызове это имя употребляется в поле мнемоники оператора. Имена макроопределений, имеющихся в программе, должны быть уникальны. Обычно при распознавании макровызова поиск по имени макрокоманды ведется сначала среди макроопределений имеющихся в программе, а затем (если в программе такое макроопределение не найдено) - в библиотеках макроопределений. Таким образом, имя макрокоманды, определенной в программе, может совпадать с именем макрокоманды, определенной в библиотеке, в этом случае макрокоманда, определенная в программе, заменяет собой библиотечную.
Формальные параметры играют ту же роль, что и формальные параметры процедур/функций. При обработке макровызова вместо имен формальных параметров в теле макроопределения подставляются значения фактических параметров макровызова.
В развитых Макроязыках возможны три формы задания параметров: позиционная, ключевая и смешанная. При использовании позиционной формы соответствие фактических параметров формальным определяется их порядковым номером. (Позиционная форма всегда применяется для подпрограмм).
Пример:
| Заголовок макроопределения | Макровызов | Результат подстановки | M1 MACRO A,B,C | M1 X,Y,Z | A=X, B=Y, C=Z |
В позиционной форме количество и порядок следования фактических параметров макровызова должны соответствовать списку формальных параметров в заголовке макроопределения. При использовании ключевой формы каждый фактический параметр макровызова задается в виде: имя_параметра=значение_параметра
В таком же виде они описываются и в списке формальных параметров, но здесь значение_параметра может опускаться. Если значение_параметра в списке формальных параметров не опущено, то это - значение по умолчанию. В макровызове параметры могут задаваться в любом порядке, параметры, имеющие значения по умолчанию, могут опускаться.
Пример:
| Заголовок макроопределения | Макровызов | Результат подстановки | M1 MACRO A=Q,B=,C=R | M1 C=Z,B=X | A=Q, B=X, C=Z |
В смешанной форме первые несколько параметров подчиняются правилам позиционной формы, а остальные - ключевые.
Пример:
| Заголовок макроопределения | Макровызов | Результат подстановки | M1 MACRO A,B,C=Q,D=,E=R | M1 X,Y,Z,D=T,E=S | A=X,B=Y,C=Q,D=T,E=S |
В некоторых Макропроцессорах имена параметров начинаются с некоторого отличительного признака (например, амперсанда - &), чтобы Макропроцессор мог отличить "свои" имена (имена, подлежащие обработке при обработке макроопределения) от имен, подлежащих обработке Ассемблером. Для Макропроцессоров, которые мы отнесли к категории сильносвязанных такой признак может и не быть необходимым, так как такой Макропроцессор обрабатывает как свои имена, так и имена Ассемблера. В любом случае возникает проблема распознавания имени в теле макроопределения. Например, если макроопределение имеет формальный параметр &P, а в макровызове указано для него фактическое значение 'X', то как должна обрабатываться подстрока '&PA' в теле макроопределения? Должна ли эта подстрока быть заменена на 'XA' или оставлена без изменений?
Логика, которой следует большинство Макропроцессоров в этом вопросе, такова. &PA является именем в соответствии с правилами формирования имен. Поэтому оно не распознается как имя &P и остается без изменений. Если мы хотим, чтобы подстановка в этой подстроке все-таки произошла, следует поставить признак, отделяющий имя параметра от остальной части строки. Обычно в качестве такого признака используется точка - '.': '&P.A' заменяется на 'XA'.
Завершение обработки
Завершение обработкиОбработка макроопределения завершается при достижении оператора MEND. Однако, поскольку алгоритм обработки макроопределения может разветвляться, должна быть предусмотрена возможность выхода из обработки и до достижения конца макроопределения. Эта возможность обеспечивается оператором MEXIT. Операндом этого оператора может быть код_серьезности.
Программирование: Языки - Технологии - Разработка
- Программирование
- Технологии программирования
- Разработка программ
- Работа с данными
- Методы программирования
- IDE интерфейс
- Графический интерфейс
- Программирование интерфейсов
- Отладка программ
- Тестирование программ
- Программирование на Delphi
- Программирование в ActionScript
- Assembler
- Basic
- Pascal
- Perl
- VBA
- VRML
- XML
- Ada
- Lisp
- Python
- UML
- Форт
- Языки программирования





- By File (Отображение по объектам);
- By Snapshot (Отображение по снимкам);
- Compare (Сравнение);
- Quick Fix (Быстрое исправление);
- Restore (Восстановление);
- Settings (Настройки).
