Дата размещения :

Нестандартные приемы отображения. Наиболее своеобразной становится ситуация, когда данный язык высокого уровня совсем не пригоден для отображения некоторых объектов, хотя соответствующую задачу можно решить, применяя язык низкого уровня (ассемблера или машины). Тогда разработчик системы поддается искушению выполнить отображение вне уровня языка, чтобы достичь своих целей, несмотря на ограничения языка высокого уровня. Чтобы проиллюстрировать это, воспользуемся версией Фортрана, в которой отсутствуют специальные средства для работы с символами. Напишем программу, которая читает но одному символу за один раз и проверяет, не является ли очередной знак одной из букв А, Е, I, О или U. Предположим, что память ЭВМ имеет байтовую структуру и что данные типа INTEGER хранятся в двух байтах, а данные типа LOGICAL — в одном байте. Большинство программирующих на Фортране знает, как компилятор отображает массивы целых и логических переменных в последовательность слов оперативной памяти с точностью до байта.

Им также известно, что чтение символа изменит состояние определенных битов памяти и что эту последовательность битов можно интерпретировать как целое число. Зная это, разработчик программы может теперь отобразить символ с концептуального уровня на байты памяти ЭВМ: он отображает байты в двумерный логический массив (CHAR), который — с использованием оператора EQUIVALENCE — совмещается с массивом целых чисел. Массив типа INTEGER соответствует последовательности целых чисел в концептуальном пространстве. Вместо проверки наличия символов ‘Е\ которая невозможна в предполагаемом Фортране, программа может проверить число 197. Следует отметить, что включение этого примера в книгу не означает, что описанную процедуру рекомендуется применять. Однако приемы отображения вне уровня языка широко применяются, особенно при программировании на Фортране, и избежать их иногда невозможно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *