Cтраница 3
С целью облегчения доступа к хранимой на магнитных дисках информации с помощью операционной системы информация разбивается на файлы. Каждому файлу присваивается имя, состоящее из двух частей: из символьного имени файла и расширения имени. Для чтения информации с диска или записи на диск он должен быть поставлен на устройство, называемое дисководом. Так как система может иметь более одного дисковода, наряду с именем файла и расширением имени должен быть определен идентификатор дисковода. Примером имени файла, используемого для хранения модуля EXECUTIVE, может являться символьное имя EXEC. В микрокомпьютерной системе разработки фирмы Intel имена файлов ограничиваются до шести символов. Расширение имени, используе мое с каждым именем файла, должно выбираться таким образом, чтобы облегчить распознавание различных файлов, связанных с каждым модулем или процедурой. [31]
Все пары ( символьное имя, значение), в которых имя соответствует i, сохраняются в связном списке, на который указывает слот i в хэш-таблице. Если мы выберем k, приблизительно равное п, то на нахождение нужного символьного имени в среднем потребуется всего один поиск. [32]
Каталогам Вы можете давать любые имена, аналогично именам файлов. Обычно используют буквенно-цифровые имена длиной до 8 символов, хотя принципиально каталогу можно присвоить 11-ти символьное имя. [33]
Третий аргумент, inits, должен быть списком, состоящим из трех элементов, которые определяют параметрическую форму трехмерной кривой в декартовых координатах. Элементы списка могут быть или выражениями, или функциями; если выражения, то они должны содержать одно символьное имя ( параметр), а если функции - то только от одного переменного. [34]
Во время первого прохода строится таблица символов для меток, литералов и объявляемых идентификаторов. Если символьные имена не нужно удалять во время первого прохода, то хэширование - это лучший метод. Во время второго прохода происходит порождение программы. Одни директивы выполняются при первом проходе, а другие - при втором. [35]
Одна компания планирует разработать ассемблер для компьютера с 40-битным словом. Скрудж объявил, что символьные имена могут состоять только из букв, причем буква Q запрещена. [36]
Как было описано, монитор обеспечивает связь между оператором и системой на низком уровне. Чтобы использовать монитор для проверки значения параметра, например ПЕРЕКЛЮЧАТЕЛЬ, адрес ячейки памяти, в которой хранится этот параметр, должен быть известен оператору. Адрес параметра может быть получен из списка символьных имен или таблицы, выдаваемой загрузчиком. Однако в некоторых системах таблица символьных имен может храниться и размещаться в памяти после загрузки программы для выполнения. В этом случае средство, подобное монитору, может обращаться к таблице символьных имен, когда система останавливается во время объединения. [37]
В соответствии с этим алгоритмом средний элемент таблицы сравнивается с символьным именем. Если нужное имя по алфавиту идет раньше среднего элемента, значит, оно находится в первой половине таблицы. Если символьное имя по алфавиту идет после среднего элемента, значит, оно находится во второй части таблицы. Если нужное имя совпадает со средним элементом, то поиск на этом завершается. [38]
Как было описано, монитор обеспечивает связь между оператором и системой на низком уровне. Чтобы использовать монитор для проверки значения параметра, например ПЕРЕКЛЮЧАТЕЛЬ, адрес ячейки памяти, в которой хранится этот параметр, должен быть известен оператору. Адрес параметра может быть получен из списка символьных имен или таблицы, выдаваемой загрузчиком. Однако в некоторых системах таблица символьных имен может храниться и размещаться в памяти после загрузки программы для выполнения. В этом случае средство, подобное монитору, может обращаться к таблице символьных имен, когда система останавливается во время объединения. [39]
К этим символам могут обращаться другие модули. Например, если модуль состоит из процедуры bigbug, то элемент таблицы будет содержать цепочку символов bigbug, за которой будет следовать соответствующий адрес. Программист на языке ассемблера с помощью директивы PUBLIC указывает, какие символьные имена считаются точками входа. [40]
Еще одним примером косвенности служит использование старших номеров устройств в UNIX. В ядре содержатся две таблицы, одна для блочных устройств и одна для символьных, индексированные старшим номером устройства. Когда процесс открывает специальный файл, например / dev / hdO, система извлекает из i-узла информацию о типе устройства ( блочное или символьное), а также старший и младший номера устройств и, используя их в качестве индексов, находит в таблице драйверов соответствующий драйвер. Такой вид косвенности облегчает реконфигурацию системы, так как программы имеют дело с символьными именами устройств, а не с фактическими именами драйверов. [41]
Еще одним примером косвенности служит использование старших номеров устройств в UNIX. В ядре содержатся две таблицы, одна для блочных устройств и одна для символьных, индексированные старшим номером устройства. Когда процесс открывает специальный файл, например / dev / hdO, система извлекает из i-узла информацию о типе устройства ( блочное или символьное), а также старший и младший номера устройств и, используя их в качестве индексов, находит в таблице драйверов соответствующий драйвер. Такой вид косвенности облегчает реконфигурацию системы, так как программы имеют дело с символьными именами устройств, а не с фактическими именами драйверов. [42]
Ассемблер представляет собой язык символьного кодирования для соответствующей ЭВМ. Он основан на системе команд и включает в себя ряд дополнительных средств для составления, изменения и оформления программ. Между командами ассемблера и командами ( кодами) ЭВМ имеется Взаимно однозначное соответствие. В программе, написанной на ассемблере, вместо кодов команд используется их мнемоническое обозначение ( как правило сокращенное название команд), а адреса ячеек памяти представляются символьными именами. Поэтому программисту нетрудно следить за размещением команд и п янн: - ш в памят г - машины. В процессе трансляции символьные адреса преобразуются в действительные машинные адреса в соответствии с распределением памяти, которое автоматически выполняет транслятор. Для того чтобы избавить программиста: т необходимости написания одинаковых частей программ, во многие языки ассемблера вводятся макросредства, которые позволяют программисту задавать некоторую последовательность к: л пвд как макроопределение, организовывать библиотеку макрофункций. При написании программы программист ста, ит макрообращение с указанием фактических параметров п местах, ГДР требуется выполнение этой последовательности, я ассемблер пп1; трансляции подставляет вместо макрообращения макроопределение с соответствующими фактическими параметрами или организует переход к соответствующей подпро-грямме-макрофункпим с последующим возвратом в основную программу. [43]
С целью облегчения доступа к хранимой на магнитных дисках информации с помощью операционной системы информация разбивается на файлы. Каждому файлу присваивается имя, состоящее из двух частей: из символьного имени файла и расширения имени. Для чтения информации с диска или записи на диск он должен быть поставлен на устройство, называемое дисководом. Так как система может иметь более одного дисковода, наряду с именем файла и расширением имени должен быть определен идентификатор дисковода. Примером имени файла, используемого для хранения модуля EXECUTIVE, может являться символьное имя EXEC. В микрокомпьютерной системе разработки фирмы Intel имена файлов ограничиваются до шести символов. Расширение имени, используе мое с каждым именем файла, должно выбираться таким образом, чтобы облегчить распознавание различных файлов, связанных с каждым модулем или процедурой. [44]
Как было описано, монитор обеспечивает связь между оператором и системой на низком уровне. Чтобы использовать монитор для проверки значения параметра, например ПЕРЕКЛЮЧАТЕЛЬ, адрес ячейки памяти, в которой хранится этот параметр, должен быть известен оператору. Адрес параметра может быть получен из списка символьных имен или таблицы, выдаваемой загрузчиком. Однако в некоторых системах таблица символьных имен может храниться и размещаться в памяти после загрузки программы для выполнения. В этом случае средство, подобное монитору, может обращаться к таблице символьных имен, когда система останавливается во время объединения. [45]