ГЛАВА 2
ОРГАНИЗАЦИЯ ДАННЫХ И СПОСОБЫ АДРЕСАЦИИ
Данная глава содержит описание регистров и организации данных в
MC68020.
2.1 РАЗМЕР ОПЕРАНДОВ
Размер операндов определен следующим образом: байт состоит из 8
битов, слово состоит из 16 битов, длинное слово - из 32 битов и квадрослово - из 64 битов. Размер операнда для каждой команды либо явно закодирован в команде, либо неявно задается самой командой. Сопроцессорный интерфейс обеспечивает работу с операндами произвольного размера от 1 бита до 256 байтов.
2.2 ОРГАНИЗАЦИЯ ДАННЫХ В РЕГИСТРАХ
Восемь регистров данных обеспечивают работу с 1, 8, 16, 32 и
64-битными операндами, 16 и 32-битными адресами и битовыми полями длиной от 1 до 32 битов. Семь адресных регистров и указатели стеков обеспечивают работу с адресными операндами длиной
16 и 32 бита. Шесть управляющих регистров (SR, VBR, SFC, DFC,
CACR и CAAR) допускают работу с данными различного размера, определяемого конкретным регистром. Сопроцессорами могут определяться операнды специфических размеров, работу с которыми должны обеспечивать их собственные регистры.
2.2.1 Регистры данных
Длина каждого из регистров данных составляет 32 бита. Байтовые операнды занимают младшие 8 битов, словные операнды занимают младшие 16 битов и длинные словные операнды занимают все 32 бита. У целого числа младший бит адресуется как нулевой, а самый старший - как 31-й бит. В битовых полях старший бит адресуется как нулевой, а самый младший адресуется величиной, равной длине поля минус единица.
Данные типа квадрослово состоят из двух длинных слов и используются для 32-битных операций умножения и деления (со знаком и без знака). Квадрослово может размещаться в произвольной паре регистров данных (без всякого ограничения на выбор элементов пары). Для работы с данными этого типа явных команд не предусмотрено, хотя для пересылки квадрослова в регистры или обратно может быть использована команда MOVEM.
При байтовых или словных операциях, когда регистр данных служит источником либо приемником операнда, используется только младшая часть регистра (байт или слово, соответственно); оставшаяся часть не используется и не изменяется.
2.2.2 Адресные регистры
Каждый из адресных регистров и указателей стека имеет длину в
32 бита и содержит полный 32-битный адрес. Адресные регистры не могут использоваться для работы с байтовыми операндами. В частности, при использовании адресного регистра в качестве источника операндом (в зависимости от операции) служит либо младшее слово регистра, либо длинное слово целиком. При использовании адресного регистра в качестве приемника изменениям подвержены все биты регистра независимо от размера операнда: дело в том, что словные операнды перед выполнением операций над ними приводятся к 32-битным путем распространения знака операнда на старшие биты. Адресный регистр может быть также использован и для некоторых простых операций.
2.2.3 Управляющие регистры
Длина регистра состояния (SR) составляет 16 битов, доступ к его младшему байту может осуществляться как к самостоятельному регистру кодов условий (CCR). Некоторые из 16 битов регистра состояния не определены: такие биты считываются как нулевые, запись в них игнорируется. Операции над регистром кодов условий являются словными; при этом старший байт считывается как нулевой, а при записи игнорируется.
Посредством управляющего регистра кэш-памяти (CACR) обеспечивается управление кэш-памятью команд на кристалле и получение информации о ее состоянии. В регистр адреса кэш-памяти (CAAR) помещаются адреса, используемые рядом функций управления кэш-памятью. Базовый регистр векторов исключений (VBR) содержит начальный адрес таблицы векторов исключений. Все операции, в которых участвуют регистры CACR, CAAR и VBR являются операциями над длинными словами независимо от того, используются ли эти регистры как источники или как приемники операндов.
Регистры модификации функционального кода (SFC и DFC) имеют длину 3 бита и содержат коды адресного пространства, устанавливаемые на линиях FC0-FC2 во время операций чтения или записи
(соответственно), осуществляемых командой MOVES. Операции пересылки в регистры модификации функционального кода и обратно выполняются командой MOVEC как операции над длинными словами, невзирая на то, что 29 старших битов в операции фактически не участвуют (считываются как нулевые, игнорируются при записи).
ПРИМЕЧАНИЕ
Адресные пространства различаются по функциональному признаку: 001 - данных пользователя, 010 - программ пользователя, 101 - данных супервизора, 110 программы супервизора, 111 - процессора и два резервных. Обращения к этим адресным пространствам реализуются, вообще говоря, различными функциональными блоками микропроцессора. Выбор термина "функциональный код" обусловлен именно этим обстоятельством.
Обращения к управляющим регистрам представляют собой привилегированные операции и возможны только в режиме супервизора.
2.3 ОРГАНИЗАЦИЯ ДАННЫХ В ПАМЯТИ
Память организована на основе байтовой адресации, причем меньшие адреса соответствуют старшим байтам. Адрес N длинного слова данных соответствует адресу старшего байта старшего слова.
Младшее слово размещается с адреса N+2, а его младший байт - по адресу N+3 (см. Рис. 2-1). Следует обратить внимание на то, что для MC68020 не требуется, чтобы данные выравнивались по границам четных байтов (см. Рис. 2-22), хотя пересылка данных осуществляется наиболее эффективно в том случае, когда они выровнены по границам байтов, адреса которых кратны размерам операндов. Сказанное не относится к командам, которые должны быть выровнены по границам четных байтов.
MC68020 обеспечивает работу со следующими типами данных, размещающихся в памяти: биты и битовые поля; целые числа размером в
8, 16 и 32 бита; 32-битные адреса; двоично-десятичные данные
(упакованные и неупакованные). Данные этих типов размещаются в памяти, как показано на Рис. 2-2. (Квадрослово может служить операндом только будучи размещено в регистрах данных). Следует обратить внимание на то, что к данным всех этих типов возможно обращение по любому байтовому адресу.
31 23 15 7 0
--------------------------------------------------------------¬
¦ длинное слово $00000000 ¦
¦ ¦
¦ слово $00000000 ¦ слово $00000002 ¦
¦ ¦ ¦
¦ байт $00000000¦байт $00000001¦байт $00000002¦байт $00000003 ¦
+---------------+--------------+--------------+---------------+
¦ длинное слово $00000004 ¦
¦ ¦
¦ слово $00000004 ¦ слово $00000006 ¦
¦ ¦ ¦
¦ байт $00000004¦байт $00000005¦байт $00000006¦байт $00000007 ¦
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.