русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Предположения, используемые при вычислении времени выполнения команд


Дата добавления: 2015-06-12; просмотров: 550; Нарушение авторских прав


  1. Внешняя шина постоянно доступна для чтения и записи. В противном случае необходимо добавить ко времени чтения время ожидания освобождения шины.
  2. Используются выравненые адреса. При использовании каждого невыравненого адреса добавляется три такта.
  3. Кэш полностью заполнен перед последовательностью об- ращений к одной строке. Если чтение из кэша происходит во время заполнения кэша предыдущей командой или из-за предвыборки команд, необходимо время для ожидания полного заполнения кэша. Если процесс чтения или записи строки кэша продолжает выполняться, необходимо ожидание окончания заполнения.
  4. Если вычисляется исполнительный адрес, регистр базы не является операндом-приемником предыдущей команды. В противном случае, к указанному времени необходимо добавить 1 такт. Исключение составляют связанные команды POP и PUSH.
  5. Исполнительный адрес вычисляется при помощи регистра базы, но без регистра индекса. Если для вычисления исполнительного адреса используется регистр индекса, ко времени выполнения команды может добавляться 1 такт.
  6. Команда, которой передается управления в результате перехода находится в кэш-памяти. В противном случае необходимо добавить r тактов для доступа к команде назначения перехода. Если эта команда не полностью содержится в первом считанном двойном слове, добавляется максимум 3b такта. Если команда не полностью содержится в первом 16 байтовом пакете, добавляется максимум r-3b такта.
  7. Если нет задержки буфера записи, w тактов добавляется только в том случае, если все буферы записи заполнены. Как правило, это случается редко.
  8. Смещение и непосредственный операнд не используются вместе. В противном случае к указанному в таблице времени может добавляться 1 такт.
  9. Нет циклов анулирования. Добавляется один такт задержки для каждого цикла анулирования, если этот цикл соперничает во внутреннем кэше/внешней шине, когда ЦПУ 486 пытается использовать их.
  10. Трансляция страницы попадает в TLB. Отсутствие страницы в TLB будет вызывать добавление 13, 21 или 28 тактов ко времени выполнения команды, в зависимости от того, как установлены биты "доступная" и "грязная" и от того, один или оба входа страницы необходимо установить в памяти. Это предполагает, что и вход страницы находится в кэше данных, и сбой страницы не происходит при трансляции адреса.
  11. При выполнении команды не возникает исключения. Для опреде- ления дополнительного времени, необходимого для обработки прерывания, обратитесь к Таблице времени обработки прерываний.
  12. Команды, которые считывают несколько последовательных элементов данных (т.е. переключение задачи, POPA и т.д.) и кэш-промах предполагают начало первого обращения с 16-байтовой границы. В противном случае может понадобится заполнение дополнительной строки кэша, в результате чего к штрафному времени при кэш-промахе добавляется не более (r-3b) тактов.

Таблица E.1 Время выполнения команд целочисленной арифметики



микропроцессора i486(TM)

 

+-----------------------------------------------------------------------+

| Команда Формат | В |Вне |Прим. |

| |кэше |кэше | |

+---------------------------------------------------+-----+-----+-------|

|ЦЕЛОЧИСЛЕННЫЕ | | | |

|КОМАНДЫ | | | |

|MOV Пересылка: | | | |

| +-----------------------+ | | | |

| регистр1 - | 1000100W |11 reg1 reg2| | 1 | | |

| регистр2 +-----------------------+ | | | |

| +-----------------------+ | | | |

| регистр2 - | 1000101w |11 reg1 reg2| | 1 | | |

| регистр1 +-----------------------+ | | | |

| +-----------------------+ | | | |

| память - | 1000101w |mod reg r/m | | 1 | 2 | |

| регистр +-----------------------+ | | | |

| +-----------------------+ | | | |

| регистр - | 1000100w |mod reg r/m | | 1 | | |

| память +-----------------------+ | | | |

| +-----------------------+Непосредст- | | | |

| константа - | 1100011w |11000 reg | венные | 1 | | |

| регистр +-----------------------+ данные | | | |

| или | | | |

| +----------+ Непосредственные | | | |

| | 1011w reg| данные | 1 | | |

| +----------+ | | | |

| +-----------------------+Непосредст- | | | |

| константа - | 1100011w |mod 000 r/m | венные | 1 | | |

| память +-----------------------+ данные | | | |

| +----------+ | | | |

| память - | 1010000w | Полное смещение | 1 | | |

| сумматор (AX)+----------+ | | | |

| +----------+ | | | |

| сумматор (AX)| 1010001w | Полное смещение | 1 | 2 | |

| - память +----------+ | | | |

| | | | |

|MOVSX/MOVZX = Пересылка с расширением знака/нуля | | | |

| +-----------------------------------+| | | |

| регистр1 - | 00001111 | 1011z11w |11 reg1 reg2|| 3 | | |

| регистр2 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| память - | 00001111 | 1011z11w |mod reg r/m || 3 | 2 | |

| регистр +-----------------------------------+| | | |

|------------- | | | |

| z Команда | | | |

|------------- | | | |

| 0 MOVZX | | | |

| 1 MOVSX | | | |

|------------- | | | |

| | | | |

|PUSH Занесение в стек | | | |

| +-----------------------+ | | | |

| регистр | 11111111 | 11 110 reg | | 4 | | |

| +-----------------------+ | | | |

| +----------+ | | | |

| или | 01010 reg| | 1 | | |

| +----------+ | | | |

| +-----------------------+ | | | |

| память | 11111111 |mod 110 r/m | | 4 | 1 | 1 |

| +-----------------------+ | | | |

| +----------+ | | | |

| константа | 011010s0 | Непосредственные данные | 1 | | |

| +----------+ | | | |

|PUSHA = Занести в стек все | | | |

| +----------+ | | | |

| | 01100000 | | 11 | | |

| +----------+ | | | |

|POP Восстановить из стека | | | |

| +-----------------------+ | | | |

| регистр | 10001111 | 11 000 reg | | 4 | 1 | |

| +-----------------------+ | | | |

| +----------+ | | | |

| или | 01011 reg| | 1 | 2 | |

| +----------+ | | | |

| +-----------------------+ | | | |

| память | 10001111 |mod 000 r/m | | 5 | 2 | 1 |

| +-----------------------+ | | | |

|POPA = Восстановить из стека все | | | |

| +----------+ | | | |

| | 01100000 | | 9 | 7/1 | 16/32 |

| +----------+ | | | |

|XCHG = Поменять содержимое | | | |

| +-----------------------+ | | | |

| регистр1 - | 1000011w |11 reg1 reg2| | 3 | | 2 |

| регистр2 +-----------------------+ | | | |

| +----------+ | | | |

| сумматор (AX)| 10010 reg| | 3 | | 2 |

| регистр +----------+ | | | |

| +-----------------------+ | | | |

| память - | 1000011w |mod reg r/m | | 5 | | 2 |

| регистр +-----------------------+ | | | |

|NOP = Нет операции | | | |

| +----------+ | | | |

| | 10010000 | | 1 | | |

| +----------+ | | | |

|LEA = Загрузить EA в регистр | | | |

| +-----------------------+ | | | |

| | 10001101 |mod reg r/m | | | | |

| +-----------------------+ | | | |

| без использования индексного регистра | 1 | | |

| с использованием индексного регистра | 2 | | |

|------------------------------------------- | | | |

| Команда TTT | | | |

|------------------------------------------- | | | |

| ADD Сложение 000 | | | |

| ADC Сложение с переносом 010 | | | |

| AND Логическое И 100 | | | |

| OR Логическое ИЛИ 001 | | | |

| SUB Вычитание 101 | | | |

| SBB Вычитание с займом 011 | | | |

| XOR Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ 110 | | | |

|------------------------------------------- | | | |

| +-----------------------+ | | | |

|регистр1 - | 00TTT00w |11 reg1 reg2| | 1 | | |

|регистр2 +-----------------------+ | | | |

| +-----------------------+ | | | |

|регистр2 - | 00TTT01w |11 reg1 reg2| | 1 | | |

|регистр1 +-----------------------+ | | | |

| +-----------------------+ | | | |

|память - | 00TTT01w |mod reg r/m | | 2 | 2 | |

|регистр +-----------------------+ | | | |

| +-----------------------+ | | | |

|регистр - | 00TTT00w |mod reg r/m | | 3 | 6/2 | U/L |

|память +-----------------------+ | | | |

| +-----------------------+Непосредст- | | | |

|константа - | 100000sw | 11 TTT reg | венные | 1 | | |

|регистр +-----------------------+ данные | | | |

| +----------+ | | | |

|константа - | 00TTT10w | Непосредственные данные | 1 | | |

|сумматор (AX) +----------+ | | | |

| +-----------------------+Непосредст- | | | |

|константа - | 100000sw |mod TTT r/m | венные | 3 | 6/2 | U/L |

|память +-----------------------+ данные | | | |

|------------------------------------------- | | | |

| Команда TTT | | | |

|------------------------------------------- | | | |

| INC Увеличение на 1 000 | | | |

| DEC Уменьшение на 1 001 | | | |

|------------------------------------------- | | | |

| +-----------------------+ | | | |

|регистр | 1111111w | 11 TTT reg | | 1 | | |

| +-----------------------+ | | | |

| +----------+ | | | |

| или | 01TTTreg | | 1 | | |

| +----------+ | | | |

| +-----------------------+ | | | |

|память | 1111111w |mod TTT r/m | | 3 | 6/2 | U/L |

| +-----------------------+ | | | |

|------------------------------------------- | | | |

| Команда TTT | | | |

|------------------------------------------- | | | |

| NOT Логическое отрицание (инверсия) 010 | | | |

| NEG Изменение знака 011 | | | |

|------------------------------------------- | | | |

| +-----------------------+ | | | |

|регистр | 1111011w | 11 TTT reg | | 1 | | |

| +-----------------------+ | | | |

| +-----------------------+ | | | |

|память | 1111011w |mod TTT r/m | | 3 | 6/2 | U/L |

| +-----------------------+ | | | |

|CMP = Сравнение | | | |

| +-----------------------+ | | | |

|регистр1 - | 0011100w |11 reg1 reg2| | 1 | | |

|регистр2 +-----------------------+ | | | |

| +-----------------------+ | | | |

|регистр2 - | 0011101w |11 reg1 reg2| | 1 | | |

|регистр1 +-----------------------+ | | | |

| +-----------------------+ | | | |

|память - | 0011100w |mod reg r/m | | 2 | 2 | |

|регистр +-----------------------+ | | | |

| +-----------------------+ | | | |

|регистр - | 0011101w |mod reg r/m | | 2 | 2 | |

|память +-----------------------+ | | | |

| +-----------------------+Непосредст- | | | |

|константа - | 100000sw | 11 111 reg | венные | 1 | | |

|регистр +-----------------------+ данные | | | |

| +----------+ | | | |

|константа - | 0011110w | Непосредственные данные | 1 | | |

|сумматор (AX) +----------+ | | | |

| +-----------------------+Непосредст- | | | |

|константа - | 100000sw |mod 111 r/m | венные | 2 | 2 | |

|память +-----------------------+ данные | | | |

| | | | |

|TEST = Логическое сравнение | | | |

| +-----------------------+ | | | |

|регистр1 - | 1000010w |11 reg1 reg2| | 1 | | |

|регистр2 +-----------------------+ | | | |

| +-----------------------+ | | | |

|память - | 1000010w |mod reg r/m | | 2 | 2 | |

|регистр +-----------------------+ | | | |

| +-----------------------+Непосредст- | | | |

|константа - | 1111011w | 11 000 reg | венные | 1 | | |

|регистр +-----------------------+ данные | | | |

| +----------+ | | | |

|константа - | 1010100w | Непосредственные данные | 1 | | |

|сумматор (AX) +----------+ | | | |

| +-----------------------+Непосредст- | | | |

|константа - | 1111011w |mod 000 r/m | венные | 2 | 2 | |

|память +-----------------------+ данные | | | |

| | | | |

|MUL = Умножение (без знака) | | | |

| +-----------------------+ | | | |

|сумматор (AX) | 1111011w | 11 100 reg | | | | |

|регистр +-----------------------+ | | | |

| Сомножитель-Байт |13/18| |MN/MX,3|

| -Слово |13/26| |MN/MX,3|

| -Двойное слово |13/42| |MN/MX,3|

| +-----------------------+ | | | |

|сумматор (AX) | 1111011w |mod 100 r/m | | | | |

|память +-----------------------+ | | | |

| Сомножитель-Байт |13/18| 1 |MN/MX,3|

| -Слово |13/26| 1 |MN/MX,3|

| -Двойное слово |13/42| 1 |MN/MX,3|

| | | | |

|IMUL = Целочисленное умножение (со знаком) | | | |

| +-----------------------+ | | | |

|сумматор (AX) | 1111011w | 11 101 reg | | | | |

|регистр +-----------------------+ | | | |

| Сомножитель-Байт |13/18| |MN/MX,3|

| -Слово |13/26| |MN/MX,3|

| -Двойное слово |13/42| |MN/MX,3|

| +-----------------------+ | | | |

|сумматор (AX) | 1111011w |mod 101 r/m | | | | |

|память +-----------------------+ | | | |

| Сомножитель-Байт |13/18| |MN/MX,3|

| -Слово |13/26| |MN/MX,3|

| -Двойное слово |13/42| |MN/MX,3|

| +-----------------------------------+| | | |

|регистр1 | 00001111 | 10101111 |11 reg1 reg2 || | | |

|регистр2 +-----------------------------------+| | | |

| Сомножитель-Байт |13/18| |MN/MX,3|

| -Слово |13/26| |MN/MX,3|

| -Двойное слово |13/42| |MN/MX,3|

| +-----------------------------------+| | | |

|регистр1 | 00001111 | 10101111 | mod 101 r/m || | | |

|память +-----------------------------------+| | | |

| Сомножитель-Байт |13/18| 1 |MN/MX,3|

| -Слово |13/26| 1 |MN/MX,3|

| -Двойное слово |13/42| 1 |MN/MX,3|

|регистр на +-----------------------+Непосредст- | | | |

|константу | 1111011w | 11 100 reg | венные | | | |

|в регистр +-----------------------+ данные | | | |

| Сомножитель-Байт |13/18| |MN/MX,3|

| -Слово |13/26| |MN/MX,3|

| -Двойное слово |13/42| |MN/MX,3|

|память на +-----------------------+Непосредст- | | | |

|константу | 1111011w | 11 100 reg | венные | | | |

|в регистр +-----------------------+ данные | | | |

| Сомножитель-Байт |13/18| 2 |MN/MX,3|

| -Слово |13/26| 2 |MN/MX,3|

| -Двойное слово |13/42| 2 |MN/MX,3|

| | | | |

|DIV = Деление (без знака) | | | |

| +-----------------------+ | | | |

|сумматор (AX) | 1111011w | 11 110 reg | | | | |

|регистр +-----------------------+ | | | |

| Делитель -Байт | 16 | | |

| -Слово | 24 | | |

| -Двойное слово | 40 | | |

| +-----------------------+ | | | |

|сумматор (AX) | 1111011w |mod 110 r/m | | | | |

|память +-----------------------+ | | | |

| Делитель -Байт | 16 | | |

| -Слово | 24 | | |

| -Двойное слово | 40 | | |

| | | | |

|IDIV = Целочисленное деление (со знаком) | | | |

| +-----------------------+ | | | |

|сумматор (AX) | 1111011w | 11 111 reg | | | | |

|регистр +-----------------------+ | | | |

| Делитель -Байт | 19 | | |

| -Слово | 27 | | |

| -Двойное слово | 43 | | |

| +-----------------------+ | | | |

|сумматор (AX) | 1111011w |mod 111 r/m | | | | |

|память +-----------------------+ | | | |

| Делитель -Байт | 20 | | |

| -Слово | 28 | | |

| -Двойное слово | 44 | | |

| | | | |

|CBW Преобтазование Байта в Слово | | | |

| +----------+ | | | |

| | 10011000 | | 3 | | |

| +----------+ | | | |

| | | | |

|CWD Преобтазование Слова в Двойное слово | | | |

| +----------+ | | | |

| | 10011001 | | 3 | | |

| +----------+ | | | |

|------------------------------------------- | | | |

| Команда TTT | | | |

|------------------------------------------- | | | |

| ROL Циклический сдвиг влево 000 | | | |

| ROR Циклический сдвиг вправо 001 | | | |

| RCL Циклический сдвиг влево | | | |

| через бит переноса 010 | | | |

| RCR Циклический сдвиг вправо | | | |

| через бит переноса 011 | | | |

| SHL/SHA Логический/арифметический | | | |

| сдвиг влево 100 | | | |

| SHR Логический сдвиг вправо 101 | | | |

| SAR Арифметический сдвиг вправо 111 | | | |

|------------------------------------------- | | | |

| | | | |

|Не через бит переноса (ROL, ROR, SAL, SAR, SHL, | | | |

| и SHR) | | | |

| +-----------------------+ | | | |

|регистр на 1 | 1101000w | 11 TTT reg | | 3 | | |

| +-----------------------+ | | | |

| +-----------------------+ | | | |

|память на 1 | 1101000w |mod TTT r/m | | 4 | 6 | |

| +-----------------------+ | | | |

| +-----------------------+ | | | |

|регистр на CL | 1101001w | 11 TTT reg | | 3 | | |

| +-----------------------+ | | | |

| +-----------------------+ | | | |

|память на CL | 1101001w |mod TTT r/m | | 4 | 6 | |

| +-----------------------+ | | | |

| +-----------------------+ Непосредст-| | | |

|регистр на | 1100000w | 11 TTT reg | венные дан-| 2 | | |

|константу +-----------------------+ ные (8 бит)| | | |

| +-----------------------+ Непосредст-| | | |

|память на | 1100000w |mod TTT r/m | венные дан-| 4 | 6 | |

|константу +-----------------------+ ные (8 бит)| | | |

| | | | |

|Через бит переноса (RСL, RСR) | | | |

| +-----------------------+ | | | |

|регистр на 1 | 1101000w | 11 TTT reg | | 3 | | |

| +-----------------------+ | | | |

| +-----------------------+ | | | |

|память на 1 | 1101000w |mod TTT r/m | | 4 | 6 | |

| +-----------------------+ | | | |

| +-----------------------+ | | | |

|регистр на CL | 1101001w | 11 TTT reg | |8/30 | |MN/MX,4|

| +-----------------------+ | | | |

| +-----------------------+ | | | |

|память на CL | 1101001w |mod TTT r/m | |9/31 | |MN/MX,5|

| +-----------------------+ | | | |

| +-----------------------+ Непосредст-| | | |

|регистр на | 1100000w | 11 TTT reg | венные дан-|8/30 | |MN/MX,4|

|константу +-----------------------+ ные (8 бит)| | | |

|------------------------------------------- | | | |

| Команда TTT | | | |

|------------------------------------------- | | | |

| SHLD Двойной сдвиг влево 100 | | | |

| SHRD Двойной сдвиг вправо 101 | | | |

|------------------------------------------- | | | |

| +-----------------------------------+| | | |

|регистр | 00001111 | 10TTT100 |11 reg2 reg1 || 2 | | |

|константа +-----------------------------------+| | | |

| Непосредственные данные ( 8 бит ) | | | |

| +-----------------------------------+| | | |

|память | 00001111 | 10TTT101 | mod reg r/m || 3 | 6 | |

|константа +-----------------------------------+| | | |

| Непосредственные данные ( 8 бит ) | | | |

| +-----------------------------------+| | | |

|регистр на CL | 00001111 | 10TTT101 |11 reg2 reg1 || 3 | | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

|память на CL | 00001111 | 10TTT101 | mod reg r/m || 4 | 5 | |

| +-----------------------------------+| | | |

|BSWAP = Поменять местами байты | | | |

| +-----------------------+ | | | |

| | 00001111 | 11001 reg | | | | |

| +-----------------------+ | | | |

|XADD = Поменять и сложить | | | |

| +-----------------------------------+| | | |

|регистр1 | 00001111 | 1100000w |11 reg2 reg1 || 3 | | |

|регистр2 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

|память | 00001111 | 1100000w | mod reg r/m || 4 | 6/2 | U/L |

|регистр +-----------------------------------+| | | |

| | | | |

|CMPXCHG = Сравнить и поменять | | | |

| +-----------------------------------+| | | |

|регистр1 | 00001111 | 1011000w |11 reg2 reg1 || 6 | | |

|регистр2 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

|память | 00001111 | 1011000w | mod reg r/m ||7/10 | 2 | 6 |

|регистр +-----------------------------------+| | | |

| | | | |

|КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ (внутри сегмента) | | | |

|ПРИМЕЧАНИЕ: Время выполнения указано следующим | | | |

| образом: переход выполнен/не выполнен | | | |

| | | | |

|Jccc = Переход по условию ccc | | | |

| +-----------------------+ | | | |

|8-разрядное | 0111tttn | 8-раз.смещ.| | 3/1 | |T/NT,23|

|смещение +-----------------------+ | | | |

| +-----------------------+ | | | |

|полное | 00001111 | 1000111n | полное | 3/1 | |T/NT,23|

|смещение +-----------------------+ смещение | | | |

|ПРИМЕЧАНИЕ: Время выполнения указано следующим | | | |

| образом: переход выполнен/не выполнен | | | |

| | | | |

|Sccc = Установить байт по условию (Время выполнения| | | |

| указано следующим образом истина/ложь) | | | |

| +-----------------------------------+| | | |

|регистр | 00001111 | 1001tttn | 11 000 reg || 4/3 | | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

|память | 00001111 | 1001tttn |mod 000 r/m || 3/4 | | |

| +-----------------------------------+| | | |

|------------------------------------------- | | | |

| Мнемоника Условие tttn | | | |

| сссс | | | |

|------------------------------------------- | | | |

| O Переполнение 0000 | | | |

| NO Нет переполнения 0001 | | | |

| B/NAE Ниже/Не выше и не равно 0010 | | | |

| NB/AE Не ниже/Выше или равно 0011 | | | |

| E/Z Равно/Нуль 0100 | | | |

| NE/NZ Не равно/Не нуль 0101 | | | |

| BE/NA Ниже или равно/Не выше 0110 | | | |

| NBE/A Не ниже и не равно/Выше 0111 | | | |

| S Знак 1000 | | | |

| NS Отсутствие знака 1001 | | | |

| P/PE Четность 1010 | | | |

| NP/PO Отсутствие четности/Нечетность 1011 | | | |

| L/NGE Меньше/Не больше и не равно 1100 | | | |

| NL/GE Не меньше/Больше или равно 1101 | | | |

| LE/NG Меньше или равно/Не больше 1110 | | | |

| NLE/G Не меньше и не равно/Больше 1111 | | | |

|------------------------------------------- | | | |

| | | | |

|LOOP = Цикл CX раз | | | |

| +-----------------------+ | | | |

| | 11100010 | 8-раз.смещ.| | 7/6 | |L/NL,23|

| +-----------------------+ | | | |

|LOOPZ/LOOPE = Цикл с нулем/равенством | | | |

| +-----------------------+ | | | |

| | 11100001 | 8-раз.смещ.| | 9/6 | |L/NL,23|

| +-----------------------+ | | | |

|LOOPNZ/LOOPNE = Цикл до нуля/равенства | | | |

| +-----------------------+ | | | |

| | 11100000 | 8-раз.смещ.| | 9/6 | |L/NL,23|

| +-----------------------+ | | | |

|JCXZ = Переход, если CX = 0 | | | |

| +-----------------------+ | | | |

| | 11100011 | 8-раз.смещ.| | 8/5 | |T/NT,23|

| +-----------------------+ | | | |

|JECXZ = Переход, если ECX = 0 | | | |

| +-----------------------+ | | | |

| | 11100011 | 8-раз.смещ.| | 8/5 | |T/NT,23|

| +-----------------------+ | | | |

|(Команды JCXZ и JECXZ отличаются префиксом размера | | | |

| сегмента) | | | |

|JMP = Безусловный переход (внутри сегмента) | | | |

| +-----------------------+ | | | |

|Короткий | 11101011 | 8-раз.смещ.| | 3 | | 7,23 |

| +-----------------------+ | | | |

| +----------+ | | | |

|Прямой | 11101011 | полное смещение | 3 | | 7,23 |

| +----------+ | | | |

| +-----------------------+ | | | |

|Косвенный | 11111111 | 11 100 reg | | 5 | | 7,23 |

| (регистр) +-----------------------+ | | | |

| +-----------------------+ | | | |

|Косвенный | 11111111 |mod 100 r/m | | 5 | 5 | 7 |

| (память) +-----------------------+ | | | |

| | | | |

|CALL = Вызов (внутри сегмента) | | | |

| +----------+ | | | |

|Прямой | 11101011 | полное смещение | 3 | | 7,23 |

| +----------+ | | | |

| +-----------------------+ | | | |

|Косвенный | 11111111 | 11 010 reg | | 5 | | 7,23 |

| (регистр) +-----------------------+ | | | |

| +-----------------------+ | | | |

|Косвенный | 11111111 |mod 010 r/m | | 5 | 5 | 7 |

| (память) +-----------------------+ | | | |

| | | | |

|RET = Возврат из CALL (внутри сегмента) | | | |

| +----------+ | | | |

| | 11000011 | | 5 | 5 | |

| +----------+ | | | |

| +-----------------------+ | | | |

|С добавлением | 11000010 |16-раз.смещ.| | 5 | 5 | |

|константы к SP+-----------------------+ | | | |

| | | | |

|ENTER = Вход в процедуру | | | |

| +-----------------------+ | | | |

| | 11001000 |16-раз.смещ.| | | | |

| | |8-раз. уров.| | | | |

| +-----------------------+ | | | |

| Уровень = 0 | 14 | | |

| Уровень = 1 | 17 | | |

| Уровень(L) > 1 |17+3L| | 8 |

| | | | |

|LEAVE = Возврат из процедуры | | | |

| +----------+ | | | |

| | 11001001 | | 5 | 1 | |

| +----------+ | | | |

|КОМАНДЫ РАБОТЫ С РАЗЛИЧНЫМИ СЕГМЕНТАМИ | | | |

| | | | |

|MOV = Пересылка | | | |

| +------------------------+ | | | |

|регистр - | 10001110 |11 sreg3 reg | | 3/9 | 0/3 |RV/P,9 |

|сег. регистр +------------------------+ | | | |

| +------------------------+ | | | |

|память - | 10001110 |mod sreg3 r/m| | 3/9 | 2/5 |RV/P,9 |

|сег. регистр +------------------------+ | | | |

| +------------------------+ | | | |

|сег. регистр- | 10001110 |11 sreg3 reg | | 3 | | |

|регистр +------------------------+ | | | |

| +------------------------+ | | | |

|сег.регистр- | 10001100 |mod sreg3 r/m| | 3 | | |

|память +------------------------+ | | | |

| | | | |

|PUSH = Занесение в стек | | | |

| +-----------+ | | | |

|сег. регистр |000sreg2110| | 3 | | |

|(ES,CS,SS,DS) +-----------+ | | | |

| +------------------------+ | | | |

|сег.регистр | 00001111 |10 sreg3 000 | | 3 | | |

|(FS или GS) +------------------------+ | | | |

| | | | |

|POP = Восстановление из стека | | | |

| +-----------+ | | | |

|сег. регистр |000sreg2111| | 3/9 | 2/5 |RV/P,9 |

|(ES,CS,SS,DS) +-----------+ | | | |

| +------------------------+ | | | |

|сег.регистр | 00001111 |10 sreg3 001 | | 3/9 | 2/5 |RV/P,9 |

|(FS или GS) +------------------------+ | | | |

| | | | |

|LDS = Загрузка указателя в DS | | | |

| +------------------------+ | | | |

| | 11000101 | mod reg r/m | |6/12 |7/10 |RV/P,9 |

| +------------------------+ | | | |

|LES = Загрузка указателя в ES | | | |

| +------------------------+ | | | |

| | 11000100 | mod reg r/m | |6/12 |7/10 |RV/P,9 |

| +------------------------+ | | | |

|LFS = Загрузка указателя в FS | | | |

| +-----------------------------------+| | | |

| | 00001111 | 10110100 |mod reg r/m ||6/12 |7/10 |RV/P,9 |

| +-----------------------------------+| | | |

|LGS = Загрузка указателя в GF | | | |

| +-----------------------------------+| | | |

| | 00001111 | 10110101 |mod reg r/m ||6/12 |7/10 |RV/P,9 |

| +-----------------------------------+| | | |

|LSS = Загрузка указателя в SS | | | |

| +-----------------------------------+| | | |

| | 00001111 | 10110010 |mod reg r/m ||6/12 |7/10 |RV/P,9 |

| +-----------------------------------+| | | |

| | | | |

|CALL = Вызов | | | |

| +----------+ | | | |

|Прямой сегмент| 10011010 | беззнаковое полное | 18 | 2 |R,7,22 |

| +----------+ смещение, селектор | | | |

| На тот же уровнь | 20 | 3 | P,9 |

| На тот же уровнь через шлюз | 35 | 6 | P,9 |

| На внутренний уровень без параметров | 69 | 17 | P,9 |

| На внутренний уровень с x параметрами длиной в | | | |

| двойное слово |77+4x|17-n |P,11,9 |

| На TSS |37+TS| 3 |P,10,9 |

| Через шлюз задания |38+TS| 3 |P,10,9 |

| +------------------------+ | | | |

|Косвенный | 11111111 | mod 011 r/m | | 17 | 8 | R,7 |

| сегмент +------------------------+ | | | |

| На тот же уровень | 20 | 10 | P,9 |

| На тот же уровень через шлюз | 35 | 13 | P,9 |

| На внутренний уровень без параметров | 69 | 24 | P,9 |

| На внутренний уровень с x параметрами длиной в | | | |

| двойное слово |77+4x|24-n |P,11,9 |

| На TSS |37+TS| 10 |P,10,9 |

| Через шлюз задания |38+TS| 10 |P,10,9 |

| | | | |

|RET = Выход из CALL | | | |

| +----------+ | | | |

|Внутри | 11001011 | | 13 | 8 | R,7 |

| сегмента +----------+ | | | |

| На тот же уровень | 17 | 9 | P,9 |

| На внешний уровень | 35 | 12 | P,9 |

|Внутри +------------------------+ | | | |

|сугмента с | 11001010 |16-раз. смещ.| | 14 | 8 | R,7 |

|добавлением +------------------------+ | | | |

|константы к SP | | | |

| На тот же уровень | 18 | 9 | P,9 |

| На внешний уровень | 36 | 12 | P,9 |

| | | | |

|JMP = Безусловный переход | | | |

| +----------+ | | | |

|Прямой внутри | 10011010 | беззнаковое полное | 17 | 2 |R,7,22 |

| сегмента +----------+ смещение, селектор | | | |

| На тот же уровнь | 19 | 3 | P,9 |

| На тот же уровнь через шлюз | 32 | 6 | P,9 |

| На TSS |42+TS| 3 |P,10,9 |

| Через шлюз задания |43+TS| 3 |P,10,9 |

|Косвенный +------------------------+ | | | |

|внутри | 11111111 | mod 011 r/m | | 13 | 9 | R,7,9 |

|сегмента +------------------------+ | | | |

| На тот же уровнь | 18 | 10 | P,9 |

| На тот же уровнь через шлюз | 31 | 13 | P,9 |

| На TSS |41+TS| 10 |P,10,9 |

| Через шлюз задания |42+TS| 10 |P,10,9 |

| | | | |

|КОМАНДЫ ДЛЯ РАБОТЫ С БИТАМИ | | | |

| | | | |

|BT = Проверка битов | | | |

| +-----------------------------------+| | | |

|регистр | 00001111 | 10111010 | 11 100 reg || 3 | | |

|константа +-----------------------------------+| | | |

| Непосредственные данные ( 8 бит ) | | | |

| +-----------------------------------+| | | |

|память | 00001111 | 10111010 | mod 100 r/m || 3 | | |

|константа +-----------------------------------+| | | |

| Непосредственные данные ( 8 бит ) | | | |

| +-----------------------------------+| | | |

|регистр1 | 00001111 | 10100011 |11 reg2 reg1 || 3 | | |

|регистр2 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

|память | 00001111 | 10100011 | mod reg r/m || 8 | 2 | |

|регистр +-----------------------------------+| | | |

|------------------------------------------- | | | |

| Команда TTT | | | |

|------------------------------------------- | | | |

| BTS Проверка и установка бита 101 | | | |

| BTR Проверка и сброс бита 110 | | | |

| BTC Проверка и инверсия бита 111 | | | |

|------------------------------------------- | | | |

| +-----------------------------------+| | | |

|регистр | 00001111 | 10111010 | 11 TTT reg || 6 | | |

|константа +-----------------------------------+| | | |

| Непосредственные данные ( 8 бит ) | | | |

| +-----------------------------------+| | | |

|память | 00001111 | 10111010 | mod TTT r/m || 8 | 2/0 | U/L |

|константа +-----------------------------------+| | | |

| Непосредственные данные ( 8 бит ) | | | |

| +-----------------------------------+| | | |

|регистр1 | 00001111 | 10TTT011 |11 reg2 reg1 || 6 | | |

|регистр2 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

|память | 00001111 | 10TTT011 | mod reg r/m || 13 | 3/1 | U/L |

|регистр +-----------------------------------+| | | |

| | | | |

|BSF = Прямое сканирование битов | | | |

| +-----------------------------------+| | | |

|регистр1 | 00001111 | 10111100 |11 reg2 reg1 ||6/42 | |MN/MX, |

|регистр2 +-----------------------------------+| | | 12|

| +-----------------------------------+| | | |

|память | 00001111 | 10111100 | mod reg r/m ||7/43 | 2 |MN/MX, |

|регистр +-----------------------------------+| | | 13|

| | | | |

|BSF = Обратное сканирование битов | | | |

| +-----------------------------------+| | | |

|регистр1 | 00001111 | 10111101 |11 reg2 reg1 ||6/103| |MN/MX, |

|регистр2 +-----------------------------------+| | | 14|

| +-----------------------------------+| | | |

|память | 00001111 | 10111101 | mod reg r/m ||7/104| 2 |MN/MX, |

|регистр +-----------------------------------+| | | 15|

| | | | |

|КОМАНДЫ РАБОТЫ СО СТРОКАМИ | | | |

| | | | |

|CMPS = Сравнение Байта/Слова | | | |

| +----------+ | | | |

| | 1010011w | | 8 | 6 | 16 |

| +----------+ | | | |

|LOADS = Загрузка Байта/Слова в AL/AX/EAX | | | |

| +----------+ | | | |

| | 1010110w | | 5 | 2 | |

| +----------+ | | | |

|MOVS = Пересылка Байта/Слова | | | |

| +----------+ | | | |

| | 1010010w | | 7 | 2 | 10 |

| +----------+ | | | |

|SCAS = Сканирование Байта/Слова | | | |

| +----------+ | | | |

| | 1010111w | | 6 | 2 | |

| +----------+ | | | |

|STOS = Сохранение Байта/Слова из AL/AX/EAX | | | |

| +----------+ | | | |

| | 1010011w | | 5 | | |

| +----------+ | | | |

|XLAT = Перекодирование строки | | | |

| +----------+ | | | |

| | 11010111 | | 4 | 2 | |

| +----------+ | | | |

| | | | |

|ПОВТОРЯЮЩИЕСЯ КОМАНДЫ РАБОТЫ СО СТРОКАМИ | | | |

| | | | |

|Счетчик повторений в CX или ECX | | | |

|( С - содержимое счетчика CX или ECX ) | | | |

| | | | |

|REPE CMPS = Сравнение строки (найти несовпадение) | | | |

| +---------------------+ | | | |

| | 11110011 | 1010011w | | | | |

| +---------------------+ | | | |

| C = 0 | 5 | | |

| C > 0 |7+7c | | 16,17 |

| | | | |

|REPNE CMPS = Сравнение строки (найти совпадение) | | | |

| +---------------------+ | | | |

| | 11110010 | 1010011w | | | | |

| +---------------------+ | | | |

| C = 0 | 5 | | |

| C > 0 |7+7c | | 16,17 |

| | | | |

|REP LODS = Загрузка строки | | | |

| +---------------------+ | | | |

| | 11110010 | 1010110w | | | | |

| +---------------------+ | | | |

| C = 0 | 5 | | |

| C > 0 |7+4c | | 16,18 |

| | | | |

|REP MOVS = Пересылка строки | | | |

| +---------------------+ | | | |

| | 11110010 | 1010010w | | | | |

| +---------------------+ | | | |

| C = 0 | 5 | | |

| C = 1 | 13 | | 16 |

| C > 0 |12+3c| | 16,19 |

| | | | |

|REPE SCAS = Сканирование строки | | | |

| (найти несовпадение с AL/AX/EAX) | | | |

| +---------------------+ | | | |

| | 11110011 | 1010111w | | | | |

| +---------------------+ | | | |

| C = 0 | 5 | | |

| C > 0 |7+5c | | 20 |

| | | | |

|REPNE SCAS = Сканирование строки | | | |

| (найти совпадение с AL/AX/EAX) | | | |

| +---------------------+ | | | |

| | 11110010 | 1010111w | | | | |

| +---------------------+ | | | |

| C = 0 | 5 | | |

| C > 0 |7+5c | | 20 |

| | | | |

|REPE STOS = Сохранить строку | | | |

| +---------------------+ | | | |

| | 11110010 | 1010101w | | | | |

| +---------------------+ | | | |

| C = 0 | 5 | | |

| C > 0 |7+4c | | |

| | | | |

|УПРАВЛЕНИЕ ФЛАГОМ | | | |

| | | | |

|CLC = Сброс флага переноса | | | |

| +----------+ | | | |

| | 11111000 | | 2 | | |

| +----------+ | | | |

|STC = Установка флага переноса | | | |

| +----------+ | | | |

| | 11111001 | | 2 | | |

| +----------+ | | | |

|CMC = Инвертирование флага переноса | | | |

| +----------+ | | | |

| | 11110101 | | 2 | | |

| +----------+ | | | |

|CLD = Сброс флага направления | | | |

| +----------+ | | | |

| | 11111100 | | 2 | | |

| +----------+ | | | |

|STD = Установка флага направления | | | |

| +----------+ | | | |

| | 11111101 | | 2 | | |

| +----------+ | | | |

|CLI = Сброс флага возможности прерываний | | | |

| +----------+ | | | |

| | 11111010 | | 5 | | |

| +----------+ | | | |

|STI = Установка флага возможности прерываний | | | |

| +----------+ | | | |

| | 11111011 | | 5 | | |

| +----------+ | | | |

|LAHF = Загрузка флагов в регистр AH | | | |

| +----------+ | | | |

| | 10011111 | | 3 | | |

| +----------+ | | | |

|SAHF = Запись содержимого AH в регистр флагов | | | |

| +----------+ | | | |

| | 10011110 | | 2 | | |

| +----------+ | | | |

|PUSHF = Сохранение флагов в стеке | | | |

| +----------+ | | | |

| | 10011100 | | 4/3 | | RV/P |

| +----------+ | | | |

|POPF = Восстановление флагов из стека | | | |

| +----------+ | | | |

| | 10011101 | | 9/6 | | RV/P |

| +----------+ | | | |

| | | | |

|ДЕСЯТИЧНАЯ АРИФМЕТИКА | | | |

| | | | |

|AAA = ASCII-коррекция после сложения | | | |

| +----------+ | | | |

| | 00110111 | | 3 | | |

| +----------+ | | | |

|AAS = ASCII-коррекция после вычитания | | | |

| +----------+ | | | |

| | 00111111 | | 3 | | |

| +----------+ | | | |

|AAM = ASCII-коррекция после умножением | | | |

| +---------------------+ | | | |

| | 11010100 | 00001010 | | 15 | | |

| +---------------------+ | | | |

|AAD = ASCII-коррекция перед деления | | | |

| +---------------------+ | | | |

| | 11010101 | 00001010 | | 14 | | |

| +---------------------+ | | | |

|DAA = десятичная коррекция после сложения | | | |

| +----------+ | | | |

| | 00100111 | | 2 | | |

| +----------+ | | | |

|DAS = десятичная коррекция после вычитания | | | |

| +----------+ | | | |

| | 00101111 | | 2 | | |

| +----------+ | | | |

| | | | |

|КОМАНДЫ УПРАВЛЕНИЯ ПРОЦЕССОРОМ | | | |

| | | | |

|HLT = Останов | | | |

| +----------+ | | | |

| | 00101111 | | 4 | | |

| +----------+ | | | |

|MOV = Пересылка из регистров или в регисры | | | |

| Управления/Отладки/Проверки | | | |

| +-----------------------------------+| | | |

| В CRO из | 00001111 | 00100010 | 11 000 reg || 17 | | |

| регистра +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В CR2/CR3 из | 00001111 | 00100010 | 11 ссс reg || 4 | | |

| регистра +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В регистр из | 00001111 | 00100000 | 11 ссс reg || 4 | | |

| CRO-3 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В DR0-3 из | 00001111 | 00100011 | 11 ссс reg || 10 | | |

| регистра +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В DR6-7 из | 00001111 | 00100011 | 11 ссс reg || 10 | | |

| регистра +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В регистр из | 00001111 | 00100001 | 11 ссс reg || 9 | | |

| DR6-7 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В регистр из | 00001111 | 00100001 | 11 ссс reg || 9 | | |

| DR0-3 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В TR3 из | 00001111 | 00100110 | 11 011 reg || 4 | | |

| регистра +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В TR4-7 из | 00001111 | 00100110 | 11 ссс reg || 4 | | |

| регистра +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В регистр из | 00001111 | 00100010 | 11 011 reg || 3 | | |

| TR3 +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| В регистр из | 00001111 | 00100100 | 11 ссс reg || 4 | | |

| TR4-7 +-----------------------------------+| | | |

| | | | |

|CLTS = Сброс флага переключения задачи | | | |

| +---------------------+ | | | |

| | 00001111 | 00000110 | | 7 | 2 | |

| +---------------------+ | | | |

|INVD = Сброс данных кэша | | | |

| +---------------------+ | | | |

| | 00001111 | 00001000 | | 4 | | |

| +---------------------+ | | | |

|WBINVD = Перезапись и сброс данных кэша | | | |

| +---------------------+ | | | |

| | 00001111 | 00001001 | | 5 | | |

| +---------------------+ | | | |

|INVLPG = Сброс записи TLB | | | |

| +-----------------------------------+| | | |

| память INVLPG| 00001111 | 00000001 |mod 111 r/m ||12/11| | |

| +-----------------------------------+| | | |

| | | | |

|ПРЕФИКСНЫЕ БАЙТЫ | | | |

| | | | |

|Префикс размера адреса | | | |

| +----------+ | | | |

| | 01100111 | | 1 | | |

| +----------+ | | | |

|LOCK = префикс блокирования шины | | | |

| +----------+ | | | |

| | 11110000 | | 1 | | |

| +----------+ | | | |

|Префикс размера операнда | | | |

| +----------+ | | | |

| | 01100110 | | 1 | | |

| +----------+ | | | |

|Префикс переопределения сегмента | | | |

| +----------+ | | | |

| CS | 00101110 | | 1 | | |

| +----------+ | | | |

| +----------+ | | | |

| DS | 00111110 | | 1 | | |

| +----------+ | | | |

| +----------+ | | | |

| ES | 00100110 | | 1 | | |

| +----------+ | | | |

| +----------+ | | | |

| FS | 01100100 | | 1 | | |

| +----------+ | | | |

| +----------+ | | | |

| GS | 01100101 | | 1 | | |

| +----------+ | | | |

| +----------+ | | | |

| SS | 00110110 | | 1 | | |

| +----------+ | | | |

| | | | |

|УПРАВЛЕНИЕ ЗАЩИТОЙ | | | |

| | | | |

|ARPL = Коррекция запрошенного уровня | | | |

| превилегированности | | | |

| +-----------------------+ | | | |

| из регистра | 01100011 |11 reg1 reg2| | 9 | | |

| +-----------------------+ | | | |

| +-----------------------+ | | | |

| из памяти | 01100011 |mod reg r/m | | 9 | | |

| +-----------------------+ | | | |

|LAR = Загрузка прав доступа | | | |

| +-----------------------------------+| | | |

| из регистра | 00001111 | 00000010 |11 reg1 reg2|| 11 | 3 | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| из памяти | 00001111 | 00000010 |mod reg r/m || 11 | 5 | |

| +-----------------------------------+| | | |

|LGDT = Загрузка глобального дескриптора | | | |

| +-----------------------------------+| | | |

| регистр | 00001111 | 00000001 |mod 010 r/m || 12 | 5 | |

| таблицы +-----------------------------------+| | | |

| | | | |

|LIDT = Загрузка дескриптора прерываний | | | |

| +-----------------------------------+| | | |

| регистр | 00001111 | 00000001 |mod 011 r/m || 12 | 5 | |

| таблицы +-----------------------------------+| | | |

| | | | |

|LLDT = Загрузка локального дескриптора | | | |

| регистр +-----------------------------------+| | | |

| таблицы | 00001111 | 00000000 | 11 010 reg || 11 | 3 | |

| из регистра +-----------------------------------+| | | |

| регистр +-----------------------------------+| | | |

| таблицы | 00001111 | 00000000 |mod 010 r/m || 11 | 6 | |

| из памяти +-----------------------------------+| | | |

| | | | |

|LMSW = Загрузка слова состояния машины | | | |

| +-----------------------------------+| | | |

| из регистра | 00001111 | 00000001 | 11 110 reg || 13 | | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| из памяти | 00001111 | 00000001 |mod 110 r/m || 13 | 1 | |

| +-----------------------------------+| | | |

|LSL = Загрузка границы сегмента | | | |

| +-----------------------------------+| | | |

| из регистра | 00001111 | 00000011 |11 reg1 reg2|| 10 | 3 | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| из памяти | 00001111 | 00000011 |mod reg r/m || 10 | 6 | |

| +-----------------------------------+| | | |

|LTR = Загрузка регистра задачи | | | |

| +-----------------------------------+| | | |

| из регистра | 00001111 | 00000000 | 11 001 reg || 20 | | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| из памяти | 00001111 | 00000000 |mod 001 r/m || 20 | | |

| +-----------------------------------+| | | |

|SGDT = Сохранение таблицы глобальных дескрипторов | | | |

| +-----------------------------------+| | | |

| | 00001111 | 00000001 |mod 000 r/m || 10 | | |

| +-----------------------------------+| | | |

| | | | |

|SIDT = Сохранение таблицы дескрипторов прерываний | | | |

| +-----------------------------------+| | | |

| | 00001111 | 00000001 |mod 001 r/m || 10 | | |

| +-----------------------------------+| | | |

| | | | |

|SLDT = Сохранение таблицы локальных дескрипторов | | | |

| +-----------------------------------+| | | |

| в регистре | 00001111 | 00000000 | 11 000 reg || 2 | | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| в памяти | 00001111 | 00000000 |mod 000 r/m || 3 | | |

| +-----------------------------------+| | | |

| | | | |

|SMSW = Сохранение слова состояния машины | | | |

| +-----------------------------------+| | | |

| в регистре | 00001111 | 00000001 | 11 100 reg || 2 | | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| в памяти | 00001111 | 00000001 |mod 100 r/m || 3 | 1 | |

| +-----------------------------------+| | | |

|STR = Сохранение регистра задачи | | | |

| +-----------------------------------+| | | |

| в регистре | 00001111 | 00000000 | 11 001 reg || 2 | | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| в памяти | 00001111 | 00000000 |mod 001 r/m || 3 | | |

| +-----------------------------------+| | | |

|VERR = Проверка возможности чтения | | | |

| +-----------------------------------+| | | |

| регистр | 00001111 | 00000000 | 11 100 r/m || 11 | 3 | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| память | 00001111 | 00000000 |mod 100 r/m || 11 | 7 | |

| +-----------------------------------+| | | |

|VERW = Проверка возможности записи | | | |

| +-----------------------------------+| | | |

| в регистр | 00001111 | 00000000 | 11 101 reg || 11 | 3 | |

| +-----------------------------------+| | | |

| +-----------------------------------+| | | |

| в память | 00001111 | 00000000 |mod 101 r/m || 11 | 7 | |

| +-----------------------------------+| | | |

| | | | |

|КОМАНДЫ ПРЕРЫВАНИЙ | | | |

| | | | |

|INT n = Прерывание типа n | | | |

| +-----------------------+ | | | |

| | 11001101 | тип | |INT+ | |RV/P,21|

| +-----------------------+ | 4/0| | |

|INT 3 = Прерывание типа 3 | | | |

| +----------+ | | | |

| | 11001100 | |INT+0| | 21 |

| +----------+ | | | |

|INT0 = Прерывание 4, если флаг | | | |

| Переполнения установлен | | | |

| +----------+ | | | |

| | 11001110 | | | | |

| +----------+ | | | |

| Выполнено |INT+2| | 21 |

| Не выполнено | 3 | | 21 |

| | | | |

|BOUND = Прерывание 5, если индекс массива выходит | | | |

| за границы | | | |

| +-----------------------+ | | | |

| | 01100010 |mod reg r/m | | | | |

| +-----------------------+ | | | |

| Не выходит за гшраницу | 7 | 7 | 21 |

| Выходит за границу |INT+ | 7 | 21 |

| | 24 | | |

|IRET = Возврат из прерывания | | | |

| +----------+ | | | |

| | 11001111 | | | | |

| +----------+ | | | |

| Реальный режим/защищенный режим | 15 | 8 | |

| Защищенный режим | | | |

| На тот же уровень | 20 | 11 | 9 |

| На внешний уровень | 36 | 19 | 9 |

| На вложенную задачу (EFLAGS.NT = 1) |TS+32| 4 | 9,10 |

| | | | |

|Внешнее прерывание |INT+ | | 21 |

| | 11 | | |

|NMI = Немаскируемое прерывание |INT+3| | 21 |

| | | | |

|Отсутствие страницы |INT+ | | 21 |

| | 24| | |

|Исключения VM86 | | | |

| CLI |INT+8| | 21 |

| STI |INT+8| | 21 |

| INT n |INT+9| | |

| PUSHF |INT+9| | 21 |

| POPF |INT+8| | 21 |

| IRET |INT+9| | |

| IN | | | |

| Фиксированный порт |INT+ | | 21 |

| | 50| | |

| Переменный порт |INT+ | | 21 |

| | 51| | |

| OUT | | | |

| Фиксированный порт |INT+ | | 21 |

| | 50| | |

| Переменный порт |INT+ | | 21 |

| | 51| | |

| INS |INT+ | | 21 |

| | 50| | |

| OUTS |INT+ | | 21 |

| | 50| | |

| REPINS |INT+ | | 21 |

| | 51| | |

| REPOUTS |INT+ | | 21 |

| | 51| | |

+-----------------------------------------------------------------------+

 

+-----------------------------------------------------------------------+

| Таблица числа тактов синхронизации при переключении задачи |

+-----------------------------------------------------------------------|

| | Значение для TS |

| Метод +----------------------------------|

| | В кэше | Вне кэша |

+------------------------------------+-----------------+----------------|

| VM/486 ЦПУ/286 TSS в 486 ЦПУ TSS | 162 | 55 |

| VM/486 ЦПУ/286 TSS в 286 TSS | 143 | 31 |

| VM/486 ЦПУ/286 TSS в VM TSS | 140 | 37 |

+-----------------------------------------------------------------------+

 

+-----------------------------------------------------------------------+

| Таблица числа тактов синхронизации для прерываний |

+-----------------------------------------------------------------------|

| | Значение для прерывания |

| Метод +----------------------------------|

| | В кэше | Вне кэша | Примеч. |

+------------------------------------+------------+----------+----------|

| Реальный режим | 26 | 2 | |

| | | | |

| Защищенный режим | | | |

| Прерывание/Шлюз ловушки, | | | |

| тот же уровень | 44 | 6 | 9 |

| Прерывание/Шлюз ловушки, | | | |

| другой уровень | 71 | 17 | 9 |

| Шлюз задачи | 37 + TS | 3 | 9,10 |

| | | | |

| Виртуальный режим | | | |

| Прерывание/Шлюз ловушки, | | | |

| другой уровень | 82 | 17 | |

| Шлюз задачи | 37 + TS | 3 | 10 |

+-----------------------------------------------------------------------+

Сокращение Значение

16/32 16/32-разрядные режимы

U/L разблокированно/заблокированно

MN/MX минимум/максимум

L/NL цикличный/не цикличный

RV/P реальный или виртуальный режим/защищенный режим

R реальный режим

P защищенный режим

T/NT выполнено/не выполнено

H/NH совпадение/не совпадение

ПРИМЕЧАНИЯ:

  1. Предполагается, что адрес операнда и адрес стека не попадают в различные наборы кэша.
  2. Всегда заблокировано, никогда не присутствует в кэше.
  3. Такты = 10+max(log/2(mod(m)),n)

m = значение множителя ( min тактов для m = 0 )

n = 3/5 для +/-m

  1. Такты = { число/длину операнда } * 7 + 9

= 8 если число < длины опранда (8/16/32)

  1. Такты = { число/длину операнда } * 7 + 9

= 9 если число < длины опранда (8/16/32)

  1. Случаи равно/не равно ( дополнительное время при отсутствии в кэше одинаково независимо от заблокированости ).
  2. Предполагается, что адреса для чтения из памяти ( при косвенной адресации ), занесении в стек/удаление из стека и ветви не попадают в различные наборы кэша.
  3. Дополнительное время при отсутствии данных в кэше: добавляются тактов синхронизации для каждых 16 байтов, копируемых в новый кадр стека.
  4. Добавляются 11 тактов синхронизации для загрузки каждого недоступного дескриптора.
  5. Ссылка на таблицу числа тактов синхронизации для переключения задачи для определения значения TS.
  6. Добавляются 4 внешних такта синхронизации к дополнительному времени при отсутствии данных в кэше для каждых 16 байт.

Для примечаний 12-13: (b = 0-3, номер ненулевого байта);

(i = 0-1, номер ненулевого полубайта);

(n = 0-3, номер ненулевого бита в полубайте);

  1. Такты = 8 + 4(b + 1) + 3(i+1) + 3(n+1)

= 6, если второй операнд = 0

  1. Такты = 9 + 4(b + 1) + 3(i+1) + 3(n+1)

= 7, если второй операнд = 0
Для примечаний 14-15: (n = позиция бита 0-31)

  1. Такты = 7 + 3(32 - n)

= 6, если второй операнд = 0

  1. Такты = 8 + 3(32 - n)

= 7, если второй операнд = 0

  1. Предполагается, что адреса двух строк не попадают в различные наборы кэша.
  2. Дополнительное время при отсутствии данных в кэше: добавляются 6 тактов синхронизации для каждых 16 сравниваемых байтов. Полное дополнительное время действительно только для первого сравнения.
  3. Дополнительное время при отсутствии данных в кэше: добавляются 2 такта синхронизации для каждых 16 байтов данных. Полное дополнительное время действительно только для первой загрузки.
  4. Дополнительное время при отсутствии данных в кэше: добавляются 4 такта синхронизации для каждых 16 пересылаемых байтов. ( 1 такт для первой и 3 для второй операций ).
  5. Дополнительное время при отсутствии данных в кэше: добавляются 4 такта синхронизации для каждых 16 сканируемых байтов. ( 2 такт для первой и для второй операций ).
  6. Ссылка на таблицу числа тактов синхронизации прерываний для определения значения INT.
  7. Число тактов включает один такт для совместного использования смещения и непосредственного операнда.
  8. Ссылка на Предположение 6 в случае отсутствия данных в кэше.

Таблица E.2 Время выполнения команд ввода/вывода микропроцессора i486(TM)

+-----------------------------------------------------------------------+

| | |Защищ.|Защищ.| | |

|КОМАНДА ФОРМАТ |Реал.|режим |режим |Вирт.|Примеч.|

| |режим|(CPL< |(CPL> |режим| |

| | |IOPL) |IOPL) | | |

+-------------------------------------+-----+------+------+-----+-------|

|КОМАНДЫ ВВОДА/ВЫВОДА | | | | | |

| | | | | | |

|IN = Ввод из: | | | | | |

| +-----------------------+| | | | | |

| Фиксирован-| 1110010w |номер порта || 14 | 9 | 29 | 27 | |

| ный порт +-----------------------+| | | | | |

| +----------+ | | | | | |

| Переменный | 1110110w | | 14 | 8 | 28 | 27 | |

| порт +----------+ | | | | | |

| | | | | | |

|OUT = Вывод в: | | | | | |

| +-----------------------+| | | | | |

| Фиксирован-| 1110011w |номер порта || 16 | 11 | 31 | 29 | |

| ный порт +-----------------------+| | | | | |

| +----------+ | | | | | |

| Переменный | 1110111w | | 16 | 10 | 30 | 29 | |

| порт +----------+ | | | | | |

| | | | | | |

|INS = Ввод Байта/Слова из порта DX | | | | | |

| +----------+ | | | | | |

| | 0110110w | | 17 | 10 | 32 | 30 | |

| +----------+ | | | | | |

| | | | | | |

|OUTS = Вывод Байта/Слова в порт DX | | | | | |

| +----------+ | | | | | |

| | 0110111w | | 17 | 10 | 32 | 30 | 1 |

| +----------+ | | | | | |

| | | | | | |

|REP INS = Ввод строки | | | | | |

| +-----------------------+| | | | | |

| | 11110010 | 0110110w ||16+8c|10+8c |30+8c |29+8c| 2 |

| +-----------------------+| | | | | |

| | | | | | |

|REP OUTS = Вывод строки | | | | | |

| +-----------------------+| | | | | |

| | 11100010 | 0110111w ||17+5c|11+5c |31+5c |30+5c| 3 |

| +-----------------------+| | | | | |

+-----------------------------------------------------------------------+

ПРИМЕЧАНИЯ:

  1. Во всех случаях непопадения данных в кэш, добавляется два такта.
  2. c = счетчик в CX или ECX.
  3. Во всех режимах при непопадения данных в кэш: добавляется 2 такта для каждых 16 байт. Полное дополнительное время действительно для второй операции.

Таблица E.3 Время выполнения команд вещественной арифметики

микропроцессора i486(TM)

+-----------------------------------------------------------------------+

| | В кэше | | Паралл.| |

|КОМАНДА ФОРМАТ | |Вне | вып. |Пр.|

| +---------|кэша+--------| |

| |Среднее | |Среднее | |

| | (мин. - | | (мин.- | |

| | макс.) | | макс.) | |

+-------------------------------------------+---------+----+--------+---|

|ПЕРЕДАЧА ДАННЫХ | | | | |

| | | | | |

|FLD = Загрузка вещественного в ST(0) | | | | |

| +---------------------------------+| | | | |

|32 бита |11011 001|mod 000 r/m|s-i-b/смещ.|| 3 | 2 | | |

| памяти +---------------------------------+| | | | |

| +---------------------------------+| | | | |

|64 бита |11011 101|mod 000 r/m|s-i-b/смещ.|| 3 | 3 | | |

| памяти +---------------------------------+| | | | |

| +---------------------------------+| | | | |

| 80 бит |11011 011|mod 101 r/m|s-i-b/смещ.|| 6 | 4 | | |

| памяти +---------------------------------+| | | | |

| +---------------------+ | | | | |

| ST(i) |11011 001|11000 ST(i)| | 4 | | | |

| +---------------------+ | | | | |

| | | | | |

|FILD = Загрузка целого в ST(0) | | | | |

| +---------------------------------+| | | | |

| 16 бит |11011 111|mod 000 r/m|s-i-b/смещ.|| 14,5 | 2 | 4 | |

| памяти +---------------------------------+| (13-16) | | | |

| +---------------------------------+| | | | |

|32 бита |11011 011|mod 000 r/m|s-i-b/смещ.|| 11,5 | 2 | 4(2-4) | |

| памяти +---------------------------------+| (9 -12) | | | |

| +---------------------------------+| | | | |

|64 бита |11011 111|mod 101 r/m|s-i-b/смещ.|| 16,8 | 3 |7,8(2-8)| |

| памяти +---------------------------------+| (10-18) | | | |

| | | | | |

|FBLD = Загрузка BCD в ST(0) | | | | |

| +---------------------------------+| | | | |

| |11011 111|mod 100 r/m|s-i-b/смещ.|| 75 | 4 |7,7(2-8)| |

| +---------------------------------+|(70-103) | | | |

| | | | | |

|FST = Сохранение вещественного из ST(0) | | | | |

| +---------------------------------+| | | | |

|32 бита |11011 001|mod 010 r/m|s-i-b/смещ.|| 7 | | | 1 |

| памяти +---------------------------------+| | | | |

| +---------------------------------+| | | | |

|64 бита |11011 101|mod 010 r/m|s-i-b/смещ.|| 8 | | | 2 |

| памяти +---------------------------------+| | | | |

| +---------------------+ | | | | |

| ST(i) |11011 101|11010 ST(i)| | 3 | | | |

| +---------------------+ | | | | |

| | | | | |

|FSTP = Сохранение вещественного из ST(0) | | | | |

| и извлечение из стека | | | | |

| +---------------------------------+| | | | |

|32 бита |11011 011|mod 011 r/m|s-i-b/смещ.|| 7 | | | 1 |

| памяти +---------------------------------+| | | | |

| +---------------------------------+| | | | |

|64 бита |11011 101|mod 011 r/m|s-i-b/смещ.|| 8 | | | 2 |

| памяти +---------------------------------+| | | | |

| +---------------------------------+| | | | |

| 80 бит |11011 011|mod 111 r/m|s-i-b/смещ.|| 6 | | | |

| памяти +---------------------------------+| | | | |

| +---------------------+ | | | | |

| ST(i) |11011 101|11001 ST(i)| | 3 | | | |

| +---------------------+ | | | | |

| | | | | |

|FIST = Сохранениет целого из ST(0) | | | | |

| +---------------------------------+| | | | |

| 16 бит |11011 111|mod 010 r/m|s-i-b/смещ.|| 33,4 | | | |

| памяти +---------------------------------+| (29-34) | | | |

| +---------------------------------+| | | | |

|32 бита |11011 011|mod 010 r/m|s-i-b/смещ.|| 32,4 | | | |

| памяти +---------------------------------+| (28-34)



<== предыдущая лекция | следующая лекция ==>
B.1 Используемые обозначения | E.2.1 Общий обзор


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.828 сек.