Таненбаум Э.- Архитектура компьютера. стр.421

EVEREST: POP ВХ ; (1 байт)

К2: PUSH BP ; (1 байт)

WHITNEY: MOV BP,SP ; (2 байта)

MCKINLEY: PUSH X ; (3 байта)

FUJI: PUSH SI ; (1 байт)

KIBO: SUB SI,300 : (3 байта)

9. Можете ли вы представить себе обстоятельства, при которых метка совпадет с кодом операции (например, может ли команда M0V использоваться в качестве метки)? Аргументируйте.

10. Какие шаги нужно совершить, чтобы путем двоичного поиска найти элемент «Berkeley» в следующем списке: Ann Arbor, Berkeley, Cambridge, Eugene, Madison, New Haven, Palo Alto, Pasadena, Santa Cruz, Stony Brook, Westwood, Yellow Springs. Когда будете вычислять средний элемент в списке из четного числа элементов, возьмите элемент, который идет сразу после среднего.

11. Можно ли использовать двоичный поиск в таблице, в которой содержится простое число элементов?

12. Вычислите хэш-код для каждого из следующих символических имен. Для этого сложите буквы (а = 1, Ъ = 2 и т. д.) и возьмите результат по модулю размера хэш-таблицы. Хэш-таблица содержит 19 слотов (от 0 до 18).

els, jan, jelle, maaike

Образует ли каждое символическое имя уникальное значение хэш-функции? Если нет, то как разрешить эту коллизию?

13. Метод хэширования, описанный в тексте главы, позволяет скомпоновать все элементы, имеющие один хэш-код, в связном списке. Альтернативный метод — иметь только одну таблицу из п слотов, в которой в каждом слоте имеется пространство для одного ключа и его значения (или для указателей на них). Если алгоритм хэширования порождает слот, который уже заполнен, производится вторая попытка с использованием того же алгоритма хэширо вания. Если и на этот раз слот заполнен, алгоритм применяется снова и т. д. Так продолжается до тех пор, пока не будет найден пустой слот. Если доля слотов, которые уже заполнены, составляет R, сколько попыток в среднем понадобится для того, чтобы ввести в таблицу новый символ?

14. Вероятно, когда-нибудь в будущем на одну микросхему можно будет помещать тысячи идентичных процессоров, каждый из которых содержит несколько слов локальной памяти. Если все процессоры могут считывать и записывать три общих регистра, то как реализовать ассоциативную память?

15. Pentium 4 имеет сегментированную архитектуру. Сегменты независимы. Ассемблер для этой машины может содержать директиву SEG N, которая помещает последующий код и данные в сегмент N. Повлияет ли такая схема на счетчик адресов команд?

16. Программы часто компонуются с многочисленными библиотеками DLL. А не будет ли более эффективным просто поместить все процедуры в один большой DLL-файл, а затем скомпоновать его?

17. Можно ли отобразить DLL-файл на виртуальные адресные пространства двух процессов с разными виртуальными адресами? Если да, то какие проблемы при этом возникают? Можно ли их разрешить? Если нет, то что можно сделать, чтобы устранить их?

18. Опишем один из способов компоновки (статическая компоновка). Перед сканированием библиотеки компоновщик составляет список необходимых процедур, то есть имен, которые в компонуемых модулях определены как внешние (EXTERN). Затем компоновщик последовательно просматривает всю библиотеку, извлекая каждую процедуру, которая находится в списке нужных имен. Будет ли работать такая схема? Если нет, то почему и как это можно исправить?


⇐ Предыдущая страница| |Следующая страница ⇒