К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 41
Текст из файла (страница 41)
КИТ СМР.1. АО соответствует КНЕА1) йО,АО НЕА1) А1,АО А1 соответствует КХЕЪЪгКЕС Сравнение кода новой записи с кодом первой записи списка НЕА1) (АО),(А1) ВСТ МОЧЕ.1. МОЪ'ЕА.1. КЗТ БЕАКСН А0,4(А1) Новая запись становится первой в списке Л1,АО А2 соответствует КС))ККЕХТ АЗ соответствует КХЕХТ АО,А2 4(А2),АЗ йО,АЗ ТА11. (АЗ),(А1) 1ХЗЕКТ АЗ,А2 1.0 0Р А2,4(А1) А1,4(А2) ЯЕАКСН Переход к следующей записи 1ХЯЕКТ ТАП. Рис. 3.35.
Подпрограмма для процессора 68000, вставляющая новый элемент в связный список Подпрограмма 1)Е1.ЕТ10Х СМР.1. ВСТ МОЪ'ЕА.1. КИТ МОЪ'ЕА.1. МОЪ'ЕА.1. СМР.1. ВЕО МОЧЕА.1. ВКА ПЕНЯЕТЕ МОЧЕ.1. МОЧЕ.1. (АО),1)1 ЯЕАКСН 4(АО),АО 1)1 соответствует КП)Х()М Удаление первой записи АО,А2 4(А2),АЗ (АЗ),01 1)ЕДЕТЕ АЗ,А2 1.0ОР 4(АЗ),1)2 1)2,4(А2) 1)2 соответствует КТЕМР Рис.
3.36. Подпрограмма для процессора 68000, удаляющая элемент из связного списка МОЧЕЛ.1. МОЧЕА.1. СМРА.1. ВЕО СМР.1. В1.Т МОЧЕА.1. ВКА МОЪ'Е.1. МОЪ'Е.1. КЗТ 3.15. Примеры программ 1'79 А2 соответствует КСПККЕХТ АЗ соответствует КХЕХТ 180 Глава 3. Системы команд процессоров АНМ, Могого!а и !п1е! Система команд процессоров 1А-Э2 Репбигп Все процессоры корпорации 1пге1 имеют общее название 1пге1 АгсЫгесгпге (1А). Мы с вами рассмотрим лишь процессоры 1А, которые работают с 32-разрядными адресами памяти и 32-разрядными данными.
Общее название процессоров этого семейства 1А-32, а самые последние их представители носят имя Репт1пш. Первый процессор архитектуры 1А-32 — процессор 80386 — увидел свет в 1985 году. После этого были созданы процессоры 80486 (1989), Репгпнп (1993), Репг1шп Рго (1995), Репг1шп П (1997), Репг(пт П1 (1999) и РепС!шп 4 (2000).
Каждый новый процессор обладал более высокой производительностью, что достигалось за счет множества архитектурных усовершенствований и новых решений в микроэлектронной технологии. Об эволюции семейства 1А-32 рассказывается в главе 11. Последние его члены поддерживают специализированные команды для управления мультимедийной графической информацией и обработки векторных данных Об этих аспектах системы команд мы вкратце поговорим в данной главе, а немного подробнее — в главе 11. Набор команд процессоров 1А-32 очень большой, поэтому придется ограничиться рассмотрением самых основных команд и режимов адресации, а полную информацию об архитектуре системы команд процессоров 1А-32 и их языке ассемблера вы найдете на жеЪ-узле 1п~е1, который находится по адресу Ьсср:,г,гв ппяйпте1.сош. 3.16.
Регистры и адресация В архитектуре процессоров 1А-32 память адресуется побайтово при помощи 32-разрядных адресов, а команды работают с операндами размером 8 и 32 разряда. Эти два размера операндов, согласно терминологии 1пге1, называются байтом и двойным словом. В первых моделях процессоров 1пге1 16-разрядный операнд назывался словом. Для хранения информации используется прямой порядок байтов, описанный в разделе 2.2.2. Многобайтовые операнды могут начинаться по любым адресам. Выравниваться как-либо в памяти они не должны. 3.16.1. Структура регистров процессоров !А-32 Регистры процессора 1А-32 показаны на рис.
3.37. Обычно восемь 32-разрядных регистров с именами от КО до Рс7 являются регистрами общего назначения и используются для хранения операндов-данных или адресной информации. Крометого, имеется восемь регистров с плавающей запятой для хранения операндов-данных, имеющих размер двойного или четверного (64 разряда) слова. Регистры с плавающей запятой содержат поле расширения (на рис. 3.37 не показано), с учетом которого их длина составляет 80 бит. Дополнительные биты используются для увеличения точности при обработке процессором чисел с плавающей запятой.
О представлении и обработке чисел с плавающей запятой подробно рассказывается в главе 6. В настоящей главе мы эту тему не обсуждаем. 3.16. Регистры и адресация 1В1 31 КО к! 8 регистров общего назначения 8 регистров с плавающей запятой РР7 16 Сегмент кода С5 О Сегмент стека 55 6 регистров сегментов Сегмент ланных 31 О Указатель команды 31 131211 987 6 О Регистр состояния 1Р— разрешение прерываний Рис.
3.37. Регистры процессоров !А-32 Архитектура 1А-32 основана на модели памяти, в которой различные области памяти, называемые сегментами, имеют разное назначение. Сегменпс кода содержит команды программы, сегмент стека — стек процессора, а четыре сегмента данных предназначены для хранения операндов-данных. В шести сегментных регистрах хранятся значения селекторов, используемые для идентификации указанных 63 РРО ГР! 1ОР1.
— уровень привилегий устройств ввода-вывода ОР— переполнение 05 Е5 Е5 05 СР— перенос ХР— нуль 5Р— знак ТР— ловушка 182 Глава 3. Системы команд процессоров АЯМ, Мо1ого1а и!п1е1 Имя регистра общего назначения 18 15 8 7 О КО ЕАХ АХ К1 ЕСХ Регистры данных К2 Е1зХ 17Х КЗ ЕВХ ВХ Регистры-указатели К4 ЕВР К5 ЕВР Кб ЕЯ1 К7 Е1з1 Инлсксные регистры Указатель команды Е1Р Регистр состояния ЕРЕАС5 рис. 3.33. соответствие регистров!А-32 регистрам более ранних процессоров 1п1е! сегментов в адресном пространстве памяти.
О назначении этих регистрон мы поговорим в главе 11, где будет обсуждаться семейство 1А-32. Пока же такого рода информация нам не нужна. 32-разрядные адреса в архитектуре 1А-32 часто применяются для доступа к тем областям памяти, в которых располагается сама программа, стек процессора и области данных. В нижней части рис.
3.37 показаны еще два регистра — указатель команды, являющийся счетчиком команд и содержащий адрес следующей выполняемой команды программы, и регистр состояния, в котором хранятся флаги кодов условий (СГ, ЕГ, ВГ, ОГ). Флаги информируют о результатах арифметических операций (см. раздел 3.19). Биты режима выполнения программы (1ОР1„1Г, ТГ) связаны с операциями ввода-вывода и прерываниями, о которых рассказывается в главе 4. Регистры общего назначения процессоров семейства 1А-32 совместимы с регистрами ранних 8- и 16-разрядных процессоров 1пге1. В этих процессорах на использование разных регистров в программах накладывались некоторые ограничения. О соответствии регистров процессоров 1А-32 регистрам более ранних процессоров можно судить по рис. 3.38.
Восемь регистров общего назначения разделены на три группы: регистры данных для хранения операндов, регистры-указатели и индексные регистры для хранения адресов и индексов, посредством которых определяется исполнительный адрес операнда в памяти. 3.16. Регистры и адресация 1 83 В первых, 8-разрядных, процессорах 1пте! регистры данных назывались А, В, С и В. В более поздних 16-разрядных процессорах их стали называть АХ, ВХ, СХ и 1)Х.
Старший и младший байты каждого регистра идентифицируются суффиксами Н и 1.. Например, два байта в регистре АХ называются АН и А1.. В процессорах 1А-32 для идентификации соответствующих «расширенных» 32-разрядных регистров используется префикс Е: ЕАХ, ЕВХ, ЕСХ и ЕВХ. Этот же префикс употребляется и с другими 32-разрядными регистрами, показанными на рис. 3.38 (они являются расширенными версиями соответствующих 16-разрядных регистров, использовавшихся в более ранних процессорах).
Все перечисленные наименования регистров до сих пор применяются в технической документации 1пге! и других описаниях процессоров этой корпорации. Старые наименования регистров сохранены потому, что 1пте! поддерживает обратную совместимость для всех своих процессоров. Это означает, что при корректной установке состояния процессора программы на машинном языке, созданные для ранних 16-разрядных процессоров, будут нормально работать на современных процессорах 1А-32 без каких-либо изменений. В программах на языке ассемблера для 16-разрядных процессоров мы будем использовать в именах регистров префикс Е, поскольку это мнемоническое обозначение применяется в текущих версиях ассемблера процессоров 1А-32.
Для однобайтовых операндов, хранящихся в младших разрядах 32-разрядных регистров процессора, используются обозначения АЬ, В). и т. д, Для команд процессора 1А-32 можно динамически установить 32- или 16-разрядный режим, для чего используется байт префикса команды. Об этом мы поговорим в главе 11. 3.16.2. Режимы адресации В архитектуре 1А-32 определен большой и гибкий набор режимов адресации, используемых для доступа к отдельным элементам и областям памяти.
Мы приведем полное описание этих режимов и способов нх записи на языке ассемблера. Основные режимы адресации, поддерживаемые большинством процессоров, описаны в разделе 2.5. Речь идет о непосредственной, абсолютной, регистровой н косвенной регистровой адресации. Абсолютная адресация, согласно терминологии 1п1е1, называется прямой; так ее будем называть и мы. Существует несколько режимов адресации, обеспечивающих большую гибкость доступа к операндам, хранящимся в памяти компьютера.