
- •Билет №1 Структура эвм общего назначения. Алу, уу
- •Арифметико-логические устройства.
- •Устройства управления.
- •Описание сегментного механизма
- •Билет №2 Структура эвм общего назначения. Risc и cisc процессоры. Форматы машинных команд.
- •Risc и cisc процессоры.
- •Форматы машинных команд.
- •Описание страничного механизма.
- •Билет №3 Структура эвм общего назначения. Способы адресации. Стековая адресация. Виды стеков.
- •Способы адресации.
- •Стековая адресация. Виды стеков.
- •Особенности страничного механизма в Pentium и в р6.
- •Билет №4 Микропроцессор вм86. Назначение входов/выходов вм86 в минимальном/максимальном режиме.
- •Назначение входов/выходов вм86 в максимальном режиме.
- •Общие сведения о механизмах адресации в защищенном режиме.
- •Билет №5 Внутренняя архитектура мп вм86. Программная модель мп вм86.
- •Программная модель мп вм86.
- •Форматы системных таблиц защищенного режима. Системные таблицы
- •Билет №6 мп вм86. Сегментация памяти. Организация оперативной памяти.
- •Общие сведения о 32х разрядных процессорах фирмы Intel. Tss, ldt, gdt. Селектор,дескриптор. Билет №7 мп вм86. Организация адресного пространства портов ву.
- •Общие сведения о 32х разрядных процессорах фирмы Intel. Режимы работы, Режимы работы 32 разрядного процессора.
- •Билет №8 Программируемый адаптер к1810вв55 (i8255)
- •Битовая карта ввода вывода
- •Билет 9 Программируемый таймер к1810ви54 (i8254)
- •Механизм перехода в защищенном режиме
- •Билет №10 Общие сведения об обработке прерываний.
- •Формат машинной команды 32х разрядного процессора.
- •Билет №11 Система прерываний вм86.
- •Внутренняя кэш-память.
- •Билет №12 Контроллер прерываний к1810вн59 (i8259). Настройка вн59.
- •Сведения о внутренней организации 32-х разрядных процессорах, (состав, назначение).
- •Билет №13 Общие сведения о прямом доступе к памяти.
- •Буфер tlb. Кэш-память страниц.
- •Билет 14 Контроллер прямого доступа к памяти к1810вт37 (i8237).
- •Программирование кпдп вт37
- •Вопрос №2
- •Билет 15
- •1. Организация процессорного модуля вм86.
- •2.21 Организация процессорного модуля вм86.
- •Программная модель 32-разрядного мп.
- •Программная модель 32 разрядного мп
- •Билет 16 Слабосвязанная конфигурация.
- •2.23. Слабо связанные конфигурации.
- •Форматы таблиц gdt, ldt и idt.
- •3.4. Системные таблицы
- •Билет 17 Арбитр шин к1810вб89 (i8289).
- •2.24. Арбитр шин к1810вб89 (i8289).
- •Формат дескриптора.
- •3.15 Формат дескриптора.
- •Билет №18 Сильно связанные конфигурации на примере совместной работы мп86 и арифметического сопроцессора вм87.
- •Форматы элементов pte и pde.
- •3.8. Формат элемента pte (pde).
- •Билет №19 Формат машинных команд мп вм86.
- •Механизм переключения задач. Формат сегмента tss
- •Билет №20 мп вм86. Сегментация памяти. Организация оперативной памяти.
- •Сегментация памяти.
- •2.7 Организация оперативной памяти.
- •Общие сведения о кэш-памяти.
- •Внутренняя кэш-память
- •Сведения о кэшах в процессорах фирмы Intel.
Формат машинной команды 32х разрядного процессора.
Формат машинной команды 32 разрядного процессора приведен на рис. 84.
Дадим пояснения к рисунку. Каждый прямоугольник обозначает поле. Сверху поля указано сколько байт может занимать это поле. Например, поле кода операций (КОП) занимает либо один, либо два байта. Любое из полей (кроме КОП) в конкретной команде может отсутствовать. Префиксы, если они есть, располагаются в младших байтах команды, а поле DATA (если оно есть) занимает старшие байты. Далее приведем назначения полей.
0/1 |
|
0/1 |
|
0/1 |
|
0/1 |
|
|
|
|
||||||||||||||||||||||||||
Префикс команды |
|
Префикс размера операнда |
|
Префикс размера адреса |
|
Префикс замены сегмента |
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
1/2 |
|
0/1 |
|
0/1 |
|
0/1/2/4 |
|
0/1/2/4 |
|
|||||||||||||||||||||||||||
КОП |
|
постбайт |
|
SIB |
|
Disp. |
|
data |
Рис. 84
Префикс команды. Это либо префикс rep, либо префикс lock. Их может ставить перед командой программист.
Префикс размера операнда. Вместе с битом D в дескрипторе, загруженном в теневую часть cs, определяет размерность используемых в команде операндов. Если этот префикс есть и D = 0 или если этого префикса нет и D = 1, команда работает с 32-х разрядными операндами. В двух противных случаях команда работает с 16-ти разрядными операндами. Префикс размера операнда имеет значение 66h.
Префикс размера адреса (67h). Аналогичен предыдущему префиксу, но определяет размерность ( 16-ти или 32- разрядный) вырабатываемого командой Аэф.
Префикс замены сегмента. Напрямую задает сегментный регистр, участвующий в формировании Аф. Например mov cs:[200h], al.
Отметим, что порядок следования префиксов значения не имеет, то есть например, префикс замены сегмента может стоять перед префиксом команды.
Код операции ( КОП ). Чаще всего это поле имеет размер один байт и имеет формат, приведенный на рис. 85
КОП |
W |
Рис. 85
Бит W определяет размерность операндов. При W =0 - 8-ми разрядный, при W = 1 - 16-ти или 32-х разрядный.
Постбайт имеет формат, приведенный на рис. 86.
Поля reg и r/m задают два операнда в двухоперандных командах. При этом поле reg задает операнд в регистре, а поле r/m - в регистре или в памяти. В однооперандных командах или в двухоперандных, где один операнд задан непосредственно ( в поле data), поле reg оказывается не нужным и используется для расширения кода операции. Если поле reg используется для задания операнда, то оно трактуется в соответствии с таблицей 16.
Рис. 86
Таблица 16
reg |
w = 0 |
w = 1 |
000 |
AL |
(E)AX |
001 |
CL |
(E)CX |
010 |
DL |
(E)DX |
011 |
BL |
(E)BX |
100 |
AH |
(E)SP |
101 |
CH |
(E)BP |
110 |
DH |
(E)SI |
111 |
BH |
(E)DI |
Аналогично трактуется поле r/m при md = 11. При других значениях md вместе с r/m задает алгоритм формирования Аэф. При этом для 16-ти и для 32-х разрядного Аэф эти алгоритмы различны. Для 16-ти разрядного Аэф алгоритм его вычисления определяется в соответствии с таблицей 17.
Таблица 17
r/m |
md = 00 |
md = 01 |
md = 10 |
000 |
BX+SI |
BX+SI+disp8 |
BX+SI+disp16 |
001 |
BX+DI |
BX+DI+disp8 |
BX+DI+disp16 |
010 |
BP+SI |
BP+SI+disp8 |
BP+SI+disp16 |
011 |
BP+DI |
BP+DI+disp8 |
BP+DI+disp16 |
100 |
SI |
SI+disp8 |
SI+disp16 |
101 |
DI |
DI+disp8 |
DI+disp16 |
110 |
disp16 |
BP+disp8 |
BP+disp16 |
111 |
BX |
BX+disp8 |
BX+disp16 |
Здесь disp8 и disp16 соответственно 8-ми и 16-ти разрядное смещение, заданное в поле disp команды. Из таблицы следует, что допустима команда mov [bx], al и недопустимы команды mov [ax], cx и mov [si+di], dx.
Алгоритм формирования 32-х разрядного Аэф показан в таблице 18.
Б
айт
SIB
имеет формат, представленный на рис.
87.
При наличии байта SIB Аэф рассчитывается по формуле:
Аэф = 2SCALE × INDEX + BASE + DISP
Таблица 18
r/m |
md = 00 |
md = 01 |
md = 10 |
000 |
EAX |
EAX+disp8 |
EAX+disp32 |
001 |
ECX |
ECX+disp8 |
ECX+disp32 |
010 |
EDX |
EDX+disp8 |
EDX+disp32 |
011 |
EBX |
EBX+disp8 |
EBX+disp32 |
100 |
Аэф задается байтом SIB |
SIB и disp8 |
SIB и disp32 |
101 |
disp32 |
EBP+disp8 |
EBP+disp32 |
110 |
ESI |
ESI+disp8 |
ESI+disp32 |
111 |
EDI |
EDI+disp8 |
EDI+disp32 |
Поле INDEX трактуется в соответствии с таблицей 19.
Таблица 19
000 |
EAX |
001 |
ECX |
010 |
EDX |
011 |
EBX |
100 |
нет индекса (scale = 0) |
101 |
EBP |
110 |
ESI |
111 |
EDI |
Поле BASE трактуется в соответствии с таблицей 20.
Таблица 20
000 |
EAX |
001 |
ECX |
010 |
EDX |
011 |
EBX |
100 |
ESP |
101 |
особый случай |
110 |
ESI |
111 |
EDI |
Особый случай: если md = 00, то в качестве BASE берется disp32 из поля disp, если md =01 или md = 10, то в качестве BASE берется содержимое EBP.
Из вышеизложенного видно, что в случае 32-х разрядного Аэф возможных вариантов команд значительно больше, чем при 16-ти разрядном Аэф (за счет байта SIB). Например возможна команда mov eax, [2*eax+eax+7]. В шестнадцатеричной системе счисления эта команда имеет следующее представление:
66 67 8B 44 40 07.
Здесь 66 - префикс размера операнда, 67 - префикс размера адреса, 8В - КОП, 44 - постбайт, 40 - SIB, 07 - disp8.
Назначение полей data и disp очевидно и не требует пояснений.