АССЕМБЛЕР. Компоновщик. Загрузчик. Макрогенератор


5. ОБРАБОТКА IF-БЛОКОВ. - часть 2


            Ничего более про обработку IF-блоков я говорить не буду и на этом закончу рассказ про макрогенератор.

 

            В заключении я хочу обратить ваше внимание на одну важную вещь. Как вы видите, макрогенератор, ассемблер и другие подобные программы активно пользуются таблицами, причем эти таблицы могут быть очень большими: например, в большой программе на ЯА таблица имен, создаваемая ассемблером, может содержать сотни и тысячи имен. Ясно, что если мы хотим, чтобы эти программы работали быстро, то такие таблицы должны быть организованы не кое-как, а с умом - так, чтобы поиск в них велся как можно быстрее.

            Так вот, для этого используются те способы организации таблиц, о которых вам рассказывали в первом семестре. Например, ассемблер пользуется таблицей мнемокодов, в которой перечислены символьные названия всех машинных команд. Эта таблица создается только один раз (вместе с самим ассемблером), поэтому она не меняется, а используется только для поиска. В связи с этим такую таблицу можно организовать в виде упорядоченной таблицы или в виде перемешанной таблицы с заранее подобранной хорошей функцией расстановки. С другой стороны, таблица имен создается в процессе трансляции исходной программы, и в отношении ее активно применяется как операция вставки, так и операция поиска. Ясно, что здесь уже нельзя использовать упорядоченную таблицу, т.к. она плохо приспособлена для добавления новых элементов, а надо использовать перемешанную таблицу или таблицу в виде двоичного дерева, т.к. в этих случаях будет обеспечен и быстрый поиск, и быстрые вставки.

            Учтите все это, если вам в будущем придется создавать ассемблеры или трансляторы вообще.

 




Начало  Назад  



Книжный магазин