Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Консп_лекц_МПТ_4.doc
Скачиваний:
135
Добавлен:
23.11.2018
Размер:
2.18 Mб
Скачать

5.6.Регистровые структуры 64-разрядных микропроцессоров

В процессорах х86-64 архитектуры (Hammer, Athlon-64, Opteron) существующие в х86 регистры общего назначения (GPR) расширены с 32 до 64 бит и к ним добавлены еще 8 новых 64-разрядных регистров (R8-15). Также 8 новых регистров (ХММ8-15) добавлено в блок SSE, что обеспечивает поддержку SSE-2.

В блоке FPU используются существующие в х87 регистры данных (80-разрядные).

Р егистр указателя команд (EIP) также расширен до 64 разрядов. Регистровая структура 64-разрядного процессора приведена на рис.5.11.

5.7.Обобщенный формат команд и типы данных

32-разрядных микропроцессоров

Обобщенный вид формата команды допускает наличие полей: кода операции (1 или 2 байта); байтов адресации (0,1 или 2 байта); байтов смещения (0,1,2 или 4 байта); байтов непосредственных данных – операндов (0,1,2 или 4 байта).

Команды содержат от 1 до 11 байт. Проведенные оценки показывают, что в среднем длина команды составляет 4-5 байт.

Рассмотрим назначение основных полей кода команды. Код операции (КОП) определяет тип выполняемой операции, а также в некоторых командах в первом байте может содержаться бит W, задающий разрядность операндов:

W=0 – операция с байтами;

W=1 – операция со словами (16 или 32 разряда).

В ряде команд первый байт КОП содержит поля reg или sreg, определяющие адрес используемых регистров. Трехбитовое поле reg задает выбираемый регистр в соответствии с разрядностью обрабатываемых операндов. Поле sreg (двух или трехбитовое) определяет адрес сегментных регистров.

Байт адресации MOD R/M содержит три поля. Поля: MOD и R/M задают адрес одного из операндов, который может храниться в регистре или ячейке памяти. Кодировка этих полей определяет выбираемый способ адресации.

В одноадресных командах поле REG/КОП содержит дополнительные биты кода операции. В двухадресных командах поле REG содержит адрес регистра, в котором хранится второй из операндов. Тип команды (одно- или двухадресная) определяется первым битом КОП. Поле MOD указывает, какой разрядности смещение используется для формирования адреса. Если оно имеет значение 00 (при некоторых значениях R/M) или 01, 10, то используется 8-, 16- или 32-разрядное смещение. Это смещение задается соответствующими байтами в коде команды, которые располагаются после байтов адресации.

Для реализации некоторых способов относительной адресации используется байт SIB. Он содержит 3-битовые поля INDEX и BASE, определяющие выбор регистров, используемых в качестве индексного и базового регистров, и поле SS, задающее масштабный коэффициент для модификации значения индекса.

При выполнении операций с непосредственной адресацией один из операндов задается в последних байтах команды. В этом случае КОП ряда команд содержит бит S, определяющий способ использования непосредственно задаваемых данных.

32-разрядные микропроцессоры поддерживают следующие типы данных:

  • бит (величина в один бит);

  • битое поле (группа, включающая до 32-х смежных битов, занимающих максимум до 4-х байтов);

  • байт (8-ми битовая величина со знаком);байт без знака (8-ми битовая величина без знака);

  • целое (слово) (16-ти битовая величина со знаком);

  • целое (слово) без знака (16-ти битовая величина без знака);

  • длинное целое (двойное слово) (32-х битовая величина со знаком);

  • длинное целое (двойное слово) без знака (32-х битовая величина без знака);

  • учетверенное слово со знаком (64-х битовая величина со знаком);

  • учетверенное слово без знака (64-х битовая величина без знака);

  • 128 разрядное слово (128-и битовая величина);

  • одинарная точность, двойная точность, расширенная точность (будут рассмотрены далее);

  • короткий указатель (16 или 32 бита смещения относительно базового адреса сегмента, содержащегося в селекторе сегмента, адресация только в пределах одного сегмента);

  • длинный указатель (полный указатель, который состоит из 16-ти бит селектора сегмента и из 16-ти или 32-х бит смещения);

  • строка бит (множество смежных битов, у 32-х разрядных микропроцессоров строка бит может занимать пространство до 4-х гигабайт);

  • строка (последовательность смежных байтов, слов или двойных слов, строка может содержать от 1-го байта до 4 гигобайт);

  • упакованное BCD (двоично-десятичное число, представлено одним байтом двух десятичных цифр от 0 до 9, помещая одно число в каждый полубайт);

  • BCD распакованное (представление байтом десятичной цифры от 0 до 9);

  • плавающая запятая (32-, 64 или 80-и разрядное вещественное число со знаком. Числа с плавающей запятой поддерживаются арифметическими сопроцессорами).