Сколько бит помещается в регистр ax в процессорах семейства intel?

13 ответов на вопрос “Сколько бит помещается в регистр ax в процессорах семейства intel?”

  1. Gamath Ответить

    Процессоры Intel x86
    Лекция 2. Программная модель процессора Intel
    Процессор i8086 был выпущен компанией Intel в 1978 году, и являлся первым 16-ти разрядным процессором фирмы Intel. Процессор содержал 14 16ти разрядных регистров, имел 20-разрядную шину адрес, что позволило адресовать 1Мб памяти.
    Современные процессоры Intel являются крайне сложными устройствами. В рамках данного курса ограничимся следующими необходимыми сведениями:
    1. 32х разрядные регистры и вычислительные устройства
    Доступны 3 режима работы: реальный (8086), защищённый (80386), режим v86
    Адресуется 4Гб памяти (64Гб для Pentium Pro и старше)
    Сначала рассмотрим программирование процессора в реальном режиме.
    Регистр процессора — это сверхбыстрая память внутри процессора, предназначенная для хранения временных данных и результатов операций (регистры общего назначения), или содержащая данные, необходимые для работы процессора — базовые адреса, адреса таблиц, уровни доступа и т.д. (специальные регистры). Современные процессоры Intel(AMD) содержат большое количество регистров (около 50), большинство из которых имеет специальное назначение (управление состоянием процессора, управление задачами и виртуальной памятью, и т.д.) и используется только в программировании операционных систем.
    К регистрам общего назначения процессоров Intel относят 8 регистров — EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Регистры EAX, EBX, ECX и EDX могут использоваться для любых целей без ограничений — временного хранения данных, аргументов или результатов различных операций. В некоторых командах используется только некоторое подмножество этих регистров — команды умножение, деления, организации циклов и др. Младшие 16 бит из этих регистров имеют собственное название — AX, BX, CX и DX соответственно. В процессорах 8086-80286 существовали только 16-ти разрядные части этих регистров, 32-битные регистры EAX, EBX, ECX и EDX появились только в процессорах 80386. Кроме этого, отдельные байты регистров AX-DX также доступны как отдельные 8-ми разрядные регистры и имеют свои имена, старшие байты — AH, BH, CH, DH, младшие — AL, BL, CL, DL соответственно.
    Регистры ESI, EDI, EBP и ESP имеют более конкретное назначение и применяются для хранения временных переменных различного рода. Регистры ESI, EDI чаще всего используются для косвенной адресации памяти и работы со строками, регистры ESP и EBP при работе со стеком. Также как и в случае с регистрами EAX-ECX младшие 16 разрядов этих регистров доступны по именам SI, DI, BP и SP соответственно, в процессорах до 80386 присутствовали только 16-ти разрядные регистры.

  2. SergeyP1ay Ответить

    Что такое регистр и о чём пойдёт речь ниже?

    На физическом уровне регистр это цифровая (сверхскоростная, для микропроцессоров) схема, базовым элементов которой является триггер (схема, которая может хранить только два состояния: 0 и 1). Эта схема поддерживает ряд операций (в первую очередь загрузка, установление в константу и сдвиги) и очень широко используется во всей цифровой схемотехнике.
    Так что регистры, о которых пойдёт речь в этом обзоре не являются чем-то абстрактным, внутри современных микропроцессоров их огромное множество, но программный доступ имеется только к малому их количеству, которое определяет интерфейс взаимодействия с процессором. Это набор для управления/взаимодействия с микропроцессором и, следовательно, обработки данных. Этот набор был определён разработчиками процессора и со временем претерпевал ряд изменений, а точнее расширялся; увеличивались как разрядность, так и количество регистров (дело в том, что из соображений обратной совместимости с предыдущими версиями процессоров возможно только расширение, хотя иногда более разумно отказаться от совместимости как, например, в x86-64).
    На программном уровне регистр представляет собой набор упорядоченных битов. Упорядочены они по номерам от (n-1) до 0, где n–разрядность регистра. Причём наиболее значимый (он же старший) бит имеет номер (n-1), а наименее значимый (младший) соответственно – номер 0 (примечание: это общепринятая схема нумерации, но иногда встречается и обратная).
    Размеры регистров кратны размерам байта и, в основном, представляют собой степени двойки, но есть и другие размеры, хотя и всегда с чётным количеством байт. При этом разрядность регистров общего назначения определяется разрядностью процессора. В этом обзоре речь пойдёт о 32-х битных процессорах функционирующих в защищённом режиме (коротко, это режим, в котором работают все современные операционные системы и который обеспечивает защиту одновременно работающих программ друг от друга). И, следовательно, в основном здесь будут обсуждаться 32-х битные регистры и их части.
    Небольшое уточнение перед началом описания. Так как раньше словом называли объём данных равный разрядности процессора, следует уточнить, что ниже под словом понимается 2 байта (16 бит), а под двойным словом – 4 байта (32 бита).
    Итак, в процессорах семейства x86 можно выделить следующие группы регистров:
    1) Регистры общего назначения.
    1.1) Регистры данных.
    1.2) Счётчик.
    1.3) Индексные регистры.
    1.4) Регистры базы.
    2) Сегментные регистры и счётчик команд.
    3) Регистр флагов.
    Ниже более подробно описывается каждая группа: её состав, разрядности регистров, области применения (в каких инструкциях, на каком уровне).

    Регистры общего назначения

    Регистры общего назначения или сокращённо РОНы, как следует из их названия, могут использоваться практически для чего угодно. Однако это название не совсем соответствует действительности. Такое их использование действительно возможно, но только при соблюдении особых условий, т.е. отказа от использования части команд. Так что они играют роль РОНов между вызовами команд, неявно из использующих. В остальных случаях каждый из них играет определённую роль при выполнении определённых инструкций. Исходя из того, что делают эти инструкции можно разбить РОНы на группы, описанные ниже.

    Группа регистров данных

    Сюда входят два 32-x битных регистра EAX (Extended Accumulator Register) и EDX (Extended Data Register), которые чаще других участвуют в арифметических операциях, и за которыми закреплены роли в работе команд умножения, деления.
    Младше слово EAX/EDX доступно под обозначением AX/DX. Старший и младший байты AX/DX доступны соответственно как AH (Accumulator High)/DH (Data High) и AL (Accumulator Low)/DL (Data Low).
    Регистр EAX имеет ещё пару применений. Во-первых, для многих команд существуют особые варианты кодов операций, если он в них участвует, для которых длина инструкций меньше. Поэтому его следует использовать как можно чаще. Во-вторых, в ряде случаев можно использовать только этот регистр (например, для получения/загрузки значений управляющих регистров CRx).

    Счётчик

    Это 32-х битный регистр ECX (Extended Counter Register). Он используется в команде LOOP в качестве параметра цикла и задаёт количество итераций (и ещё, в 16 режиме он (а точнее его часть CL) использовался для задания количества битов при сдвигах больше чем на один бит).
    Младше слово доступно под обозначением CX. Старший и младший байты CX доступны соответственно как CH (Counter High) и CL (Counter Low).

    Индексные регистры

    Это два 32-х битных регистра ESI (Extended Source Register) и EDI (Extended Destination Register). Используются в командах обработки строк (MOVS, CMPS и другие), а так же в качестве индексов массивов. Второе применение не всегда в точности соответствует практике, так как можно использовать только эти регистры без базовых или в качестве индексов использовать любые другие кроме SP (последнее утверждение справедливо для 32-х битного режима). Но для ясности (и более быстрого понимания кода программы) следует, по возможности, использовать их как индексы или указатели на текущие элементы источника и назначения.
    Младше слово ESI/EDI доступно под обозначением SI/DI. Старший и младший байты SI/DI отдельных мнемоник не имеют.

    Регистры базы

    Таких регистров три EBX, ESP и EBP, все они так же 32-битные, а их младшим словам можно получить доступ через BX, SP и BP соответственно. Отдельные байты младших слов также недоступны, как и в предыдущем пункте.
    EBX может применяться, например, как база для массива, индексируемого одним из регистров ESI или EDI. Хотя, конечно же, ничто не мешает использовать его так, как вам будет угодно.
    Регистры ESP и EBP предназначены для работы со стеком. При этом ESP хранит указатель на текущую вершину стека. А EBP чаще всего хранит адрес стекового фрейма. ESP неявно модифицируется всеми инструкциями, которые работают со стеком (INT/IRET, CALL/RET, PUSH/POP и другие). При их использовании следует помнить, что по умолчанию инструкции, содержащие их, адресуют не сегмент данных, а сегмент стека. Если такое поведение нежелательно, то следует воспользоваться префиксом замены сегмента.

    Сегментные регистры и счётчик команд

    Сегментных регистров шесть: CS, DS, ES, SS, GS, FS. Все они 16 битные (на самом деле 80 битные, но получить доступ можно только к 16 битам) и содержат номер параграфа (параграф это 16 байт, расположенных последовательно с адреса кратного 16) в реальном режиме и селектор сегмента в защищённом (структура селектора простая, но её нету смысла здесь рассматривать). Так вот, в процессорах семейства x86 используется сегментная адресация, и для работы с различными участками памяти сегментные регистры настраиваются на разные базовые адреса.
    Регистр CS (Code Segment) является одним из компонентов логического адреса вместе с счётчиком команд, смещения в котором задаётся именно относительно базы сегмента CS. В защищённом режиме его содержимое также определяет текущий уровень привилегий, с которыми исполняется код.
    Регистры DS (Data Segment), ES (Extra Segment), FS и GS (не знаю как расшифровываются, возможно, просто продолжали по алфавиту) являются регистрами сегментов данных. При этом если в инструкции не указан сегмент данных, то при отсутствии в ней ESP и EBP используется сегмент в DS, кроме случаев команд работы со строками (в них ES адресует сегмент назначения). Регистры GS и FS являются дополнительными и непосредственно используются крайне редко. Поэтому некоторые операционные системы используют их для хранения базового адреса структуры-описателя состояния текущей нити.
    Регистр SS (Stack Segment) адресует сегмент стека. Он работает в паре с ESP во всех операциях со стеком.
    Счётчик команд это регистр EIP (IP – его младшее слово). Вместе с CS адресует следующую команду, которая будет выбрана процессором на выполнение. Причём адресуется именно следующая команда. Так, например, во время исполнения команды по адресу CS:00000010h, размер которой равен 2 байта, содержимое EIP будет равным 000000012h.

    Регистр флагов

    Регистр флагов называется EFLAGS и состоит из 32-бит (из них младшие 16 называются FLAGS, в реальном режиме используется именно FLAGS).
    Рассмотрим подробнее его биты, исключая те, которые на данный момент зарезервированы и процессором не используются.
    бит 0: флаг переноса, CF (Carry Flag). Указывает на то, что при вычислении арифметической операции произошёл перенос в несуществующий старший разряд или заём из него.
    бит 2: флаг четности, PF (Parity Flag). Указывает на то, что количество установленных бит в результате чётно.
    бит 4: флаг полупереноса или вспомогательного переноса, AF (Additional Flag). Тоже что и CF, но для тетрад, т.е. перенос/заём из 3 бита в 4.
    бит 6: флаг нуля, ZF (Zero Flag). Указывает на то, что результат предыдущей команды содержит одни нули.
    бит 8: флаг трассировки, TF (Trace Flag). При установке этого флага, после выполнения каждой инструкции вызывается прерывание INT 1.
    бит 9: флаг разрешения прерываний, IF (Interrupt Flag). При сбросе в ноль блокируются маскируемые аппаратные прерывания.
    бит 10: флаг направления, DF (Direction Flag). Определяет направление изменения адреса в строковых командах. 0 – увеличение, 1 – уменьшение адресов (оба состояния как для источника так и для приёмника).
    бит 11: флаг переполнения, OF (Overflow Flag). Указывает на численное переполнение результата арифметической операции.
    биты 13 – 12: уровень привилегий ввода-вывода, IOPL (Input/Output Privileges Level). Определяет минимальный уровень привилегий с которого доступно выполнение команд работы с пространством ввода/вывода.
    бит 14: флаг вложенной задачи, NT (Nested Task). Указывает на то, что после выхода из текущей задачи следует вернуться в ту, которая её вызвала.
    бит 16: флаг продолжения задачи, RF (Resume Flag). Временно запрещает отладку. Устанавливается автоматически командой IRETD обработчика отладочного прерывания.
    бит 17: флаг режима V86, VM (Virtual Mode). Указывает на активность режима эмуляции 8086.
    бит 18: флаг контроля за выравниванием, АС (Align Control). Указывает на то, что при обращению пользовательской программы к не выровненным данным следует сгенерировать прерывание.
    бит 19: флаг виртуального прерывания, VIF (Virtual Interrupt Flag). Виртуальный флаг IF.
    бит 20: флаг ожидания виртуального прерывания, VIP (Virtual Interrupt Pending). Указывает на наличие необработанного аппаратного прерывания.
    бит 21: флаг идентификации, ID (Identify). Если программа может изменить состояние этого флага, значит поддерживается инструкция CPUID.
    Для части этих битов существуют пары команд установки сброса (например, STI/CLI, STD/CLD).
    Другая часть может быть проверена с помощью команд условного перехода (или совмещённых команд проверки-пересылки).
    Все оставшиеся можно изменить, сохранив регистр флагов в стек (PUSHF), изменив его там, и загрузив обратно (POPF). При этом зарезервированные регистры трогать не следует, а либо устанавливать в ноль при первой загрузке, либо оставлять прежнее значение.

  3. Ceginn Ответить

    Регистры – ячейки памяти, расположенные в центральном процессоре, используемые для кратковременного хранения данных и доступные из машинных программ. В качестве основной модели для языка ассемблер используется микропроцессорная память (МПП) базового МП 8086 из четырнадцати регистров двухбайтовых (16 разрядов), за каждым закреплено определенное имя (рис. 2.11 справа).

    Рис.2.11. Регистры процессора Intel
    По назначению и способу использования регистры можно разбить на следующие группы:
    · Регистры общего назначения (AX, BX, CX, DX, SI, DI,BP, SP), аналогичные четырехбайтовые регистры у МП 80386 и выше именуются ЕAX, ЕBX,…(рис. 3.41 слева);
    · Сегментные или адресные регистры (CS, DS, SS, ES);
    · Указатель команд (IP);
    · Регистр флагов (Flags).
    Название регистров общего назначения могут быть расшифрованы следующим образом:
    AX accumulator, аккумулятор;
    BX base, база;
    CX counter счетчик;
    DX data данные;
    (буква Х – от слова еXtended, расширенный; в процессоре 8080 были байтовые регистры A, B, C, D, впоследствии расширенные до слова)
    SI source index, индекс источника;
    DI destination index, индекс приемника;
    BP base pointer, указатель базы;
    SP stack pointer, указатель стека.
    Все эти регистры можно использовать в любых арифметических, логических и т.п. машинных операциях. Однако каждый из них имеет определенную специализацию. Некоторые команды требуют, чтобы их операнд или операнды обязательно находились в определенных регистрах. Например, команда деления требует, чтобы первый операнд (делимое) находился в регистре АХ или в регистрах АХ и DX (в зависимости от размера операнда). Команды управления циклом используют регистр СХ в качестве счетчика цикла. Регистры AX, BX, CX и DX могут делиться на части (по одному байту), называемые соответственно AH (Нigh – старший) и AL (Low – младший), BH и BL, CH и CL, DH и DL. Запись в другие регистры и чтение из них осуществляется только целиком.
    Названия сегментных регистров (в старших моделях процессоров их число увеличено) можно расшифровать так:
    CS code segment, сегмент команд;
    DS data segment, сегмент данных;
    SS stack segment, сегмент стека;
    ES extra segment, дополнительный сегмент.
    Эти регистры используются только для записи и считывания при выполнении сегментирования адресов. В регистре CS должен находиться начальный адрес сегмента команд – той области памяти, где расположены команды программы. Регистр DS должен указывать на начало сегмента данных, в котором размещаются данные программы. Регистр SS должен указывать на начало области памяти, отведенной под стек. Если это сделано, тогда при ссылках на эти сегменты (команд, данных и стека) в командах названия этих регистров можно не указывать, они будут подразумеваться по умолчанию. При сегментировании адресов любой адрес ячейки А представляется в виде суммы B+D, где В – начальный адрес (база) того участка (сегмента) памяти, в котором находится ячейка А, а D – это смещение, адрес ячейки A, отсчитанный от начала этого сегмента (от В). В ПК размеры сегментов памяти не должны превышать 64 Кбайт (216=65536), поэтому смещения – это 16-разрядные адреса. Смещения (относительные 16-разрядные адреса) меняются от 0000h до FFFFh, в то время как абсолютные 20-разрядные адреса – от 00000h до FFFFFh.

  4. Sanos Ответить

    Таблица
    2.1.
    Основные свойства процессоров фирмы Intel
    Тип ЦП Свойства
    8086
    8088
    80286
    80386
    80486
    Pentium
    P6
    1. Год выпуска
    1978
    1979
    1982
    1985
    1989
    1993
    1995
    2. Проектные нормы (мкм)
    3
    3
    1,5
    1
    1-0,8
    0,8-0,6
    0,6-0,35
    3. Количество транзисторов
    29000
    29000
    130000
    275000
    1млн 200т
    3млн 100т
    9млн 500т
    4. Разрядность ШД/ША
    16/20
    8/20
    16/24
    32/32
    32/32
    64/32
    64/32 (36)
    5. Максимальный объем физ. памяти
    1 Мб
    1 Мб
    16 Мб
    4 Гб
    4 Гб
    4 Гб
    4 Гб (64 Гб)
    6. Максимальный объем виртуальной памяти
    1 Мб
    1 Мб
    1 Гб
    64 Тб
    64 Тб
    64 Тб
    64 Тб
    7. Максимальный размер сегмента
    64 Кб
    64 Кб
    64 Кб/4 Гб
    64 Кб/4 Гб
    64 Кб/4 Гб
    64 Кб/4 Гб
    64 Кб/4 Гб
    8. Размер очереди предвыборки (байт)
    6
    6
    16
    32
    32
    32
    32
    9. Размер операндов (бит)
    8, 16
    8, 16
    8, 16
    8, 16, 32
    8, 16, 32, 64
    8, 16, 32, 64
    8, 16, 32, 64
    10. Размер регистров (бит)
    8, 16
    8, 16
    8, 16
    8, 16, 32
    8, 16, 32
    8, 16, 32
    8, 16, 32
    11. Разбиение на страницы
    Нет
    Нет
    Нет
    Есть
    Есть
    Есть
    Есть
    12. Рабочая частота (МГЦ)
    5, 8, 10
    5, 8, 10
    8, 10, 12, 16
    20, 25,33, 40
    25-133
    60-233
    166, 180, 200
    13. Защита памяти
    Нет
    Нет
    Есть
    Есть
    Есть
    Есть
    Есть
    14. Сопроцессор
    8087
    8087
    80287
    80287, 80387
    FPU
    FPU
    FPU

  5. CrazyMegaAether™ ® Ответить

    Регистр процессора — сверхбыстрая оперативная память (СОЗУ) внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления — РОН (регистр общего назначения) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры)[1].
    Регистр представляет собой цифровую электронную схему, служащую для временного хранения двоичных чисел. В процессоре имеется значительное количество регистров, большая часть которых используется самим процессором и недоступна программисту (например, при выборке из памяти очередной команды она помещается в регистр команд, и программист обратиться к этому регистру не может). Имеются также регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы (например, управляющие регистры и теневые регистры дескрипторов сегментов). Этими регистрами пользуются в основном разработчики операционных систем. Существуют также так называемые регистры общего назначения (РОН), представляющие собой часть регистров процессора, использующихся без ограничения в арифметических операциях, но имеющие определенные ограничения, например в строковых. РОН, не характерные для эпохи мейнфреймов типа IBM/370[2] стали популярными в микропроцессорах архитектуры X86 — i8085, i8086 и последующих[3].
    Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объём оперативной памяти намного превосходит суммарный объём регистров (объём среднего модуля оперативной памяти сегодня составляет 1-4 Гб[4], суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80?86 16 битов * 4 = 64 бита (8 байт)).

    Архитектура x86

    IP (англ. Instruction Pointer) — регистр, обозначающий смещение следующей команды относительно кодового сегмента.
    IP — 16-битный (младшая часть EIP)
    EIP — 32-битный аналог (младшая часть RIP)
    RIP — 64-битный аналог
    Сегментные регистры — Регистры указывающие на сегменты.
    CS (англ. Code Segment), DS (англ. Data Segment), SS (англ. Stack Segment), ES, FS, GS
    В реальном режиме работы процессора сегментные регистры содержат адрес начала 64Kb сегмента, смещенный вправо на 4 бита.
    В защищенном режиме работы процессора сегментные регистры содержат селектор сегмента памяти, выделенного ОС.
    CS — указатель на кодовый сегмент. Связка CS:IP (CS:EIP/CS:RIP — в защищенном/64-битном режиме) указывает на адрес в памяти следующей команды.
    RAX
    RCX
    RDX
    RBX
    EAX
    ECX
    EDX
    EBX
    AX
    CX
    DX
    BX
    AH
    AL
    CH
    CL
    DH
    DL
    BH
    BL
    RSP
    RBP
    RSI
    RDI
    Rx
    ESP
    EBP
    ESI
    EDI
    RxD
    SP
    BP
    SI
    DI
    RxW
    SPL
    BPL
    SIL
    DIL
    RxB
    Регистры данных — служат для хранения промежуточных вычислений.
    RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 — R15  — 64-битные
    EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D — R15D  — 32-битные (extended AX)
    AX, CX, DX, BX, SP, BP, SI, DI, R8W — R15W — 16-битные
    AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B — R15B — 8-битные (половинки 16-ти битных регистров)
    например, AH — high AX — старшая половинка 8 бит
    AL — low AX — младшая половинка 8 бит
    где x — 8..15.
    Регистры RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL доступны только в 64-битном режиме работы процессора.
    Регистр флагов FLAGS (16 бит) / EFLAGS (32 бита) / RFLAGS (64 бита) — содержит текущее состояние процессора.
    Регистром называется функциональный узел, осуществляющий приём, хранение и передачу информации. Регистры состоят из группы триггеров, обычно D. По типу приёма и выдачи информации различают 2 типа регистров:
    С последовательным приёмом и выдачей информации — сдвиговые регистры.
    С параллельным приёмом и выдачей информации — параллельные регистры.
    Сдвиговые регистры представляют собой последовательно соединённую цепочку триггеров. Основной режим работы — сдвиг разрядов кода от одного триггера к другому на каждый импульс тактового сигнала.
    По назначению регистры различаются на:
    аккумулятор — используется для хранения промежуточных результатов арифметических и логических операций и инструкций ввода-вывода;
    флаговые — хранят признаки результатов арифметических и логических операций;
    общего назначения — хранят операнды арифметических и логических выражений, индексы и адреса;
    индексные — хранят индексы исходных и целевых элементов массива;
    указательные — хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стека);
    сегментные — хранят адреса и селекторы сегментов памяти;
    управляющие — хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.

    Счётчик команд

    IP

    IP (англ. Instruction Pointer) — регистр, содержащий адрес-смещение следующей команды, подлежащей исполнению, относительно кодового сегмента CS в процессорах семейства x86.
    Регистр IP связан с CS в виде CS:IP, где CS является текущим кодовым сегментом, а IP — текущим смещением относительно этого сегмента.
    Регистр IP является 16-разрядным регистром-указателем. Кроме него, в состав регистров этого типа входят SP (англ. Stack Pointer — указатель стека) и BP (англ. Base Pointer — базовый указатель).
    Принцип работы
    Например, CS содержит значение 2CB5[0]H, в регистре IP хранится смещение 123H.
    Адрес следующей инструкции, подлежащей исполнению, вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:
    2CB50H + 123H = 2CC73H
    Таким образом, адрес следующей инструкции для исполнения равен 2CC73H.
    При выполнении текущей инструкции процессор автоматически изменяет значение в регистре IP, в результате чего регистровая пара CS:IP всегда указывает на следующую подлежащую исполнению инструкцию.

    EIP

    Начиная с процессора 80386 была введена 32-разрядная версия регистра-указателя — EIP. В данном случае IP является младшей частью этого регистра (первые 16 разрядов). Принцип работы EIP в целом схож с работой регистра IP. Основная разница состоит в том, что в защищённом режиме, в отличие от реального режима, регистр CS является селектором (селектор указывает не на сам сегмент в памяти, а на его дескриптор сегмента в таблице дескрипторов).

    RIP

  6. Zuzuru Ответить

    № бита
    Обозначение
    Название
    Описание
    Тип флага
    FLAGS
    CF
    Carry Flag
    Флаг переноса
    Состояние
    1
    1
    Зарезервирован
    2
    PF
    Parity Flag
    Флаг чётности
    Состояние
    3
    Зарезервирован
    4
    AF
    Auxiliary Carry Flag
    Вспомогательный флаг переноса
    Состояние
    5
    Зарезервирован
    6
    ZF
    Zero Flag
    Флаг нуля
    Состояние
    7
    SF
    Sign Flag
    Флаг знака
    Состояние
    8
    TF
    Trap Flag
    Флаг трассировки
    Системный
    9
    IF
    Interrupt Enable Flag
    Флаг разрешения прерываний
    Системный
    10
    DF
    Direction Flag
    Флаг направления
    Управляющий
    11
    OF
    Overflow Flag
    Флаг переполнения
    Состояние
    12
    IOPL
    I/O Privilege Level
    Уровень приоритета ввода-вывода
    Системный
    13
    14
    NT
    Nested Task
    Флаг вложенности задач
    Системный
    15
    Зарезервирован
    EFLAGS
    16
    RF
    Resume Flag
    Флаг возобновления
    Системный
    17
    VM
    Virtual-8086 Mode
    Режим виртуального процессора 8086
    Системный
    18
    AC
    Alignment Check
    Проверка выравнивания
    Системный
    19
    VIF
    Virtual Interrupt Flag
    Виртуальный флаг разрешения прерывания
    Системный
    20
    VIP
    Virtual Interrupt Pending
    Ожидающее виртуальное прерывание
    Системный
    21
    ID
    ID Flag
    Проверка на доступность инструкции CPUID
    Системный
    22
    Зарезервированы

    31

  7. папля Ответить

    II. БАЗОВАЯ  РЕГИСТРОВАЯ  АРХИТЕКТУРА ПРОЦЕССОРОВ
    СЕМЕЙСТВА  Х86.

    В целом, регистровая модель процессоров семейства Х86
    включает в себя следующие группы регистров.
    1.
    Основные пользовательские
    регистры
    – 16 регистров.
    2.
    Системные регистры – 17 регистров.
    3.
    Регистры блока обработки чисел
    с плавающей запятой (регистры
    FPU) – 12 регистров.
    4.
    Регистры блока обработки
    пакетов чисел с плавающей запятой
    регистры
    SSE) – 9
    регистров (.
    5.
    Служебные или
    модельно-специфические (
    MSRModelSpecificRegisters) регистры,
    которые определяются конкретной моделью процессора. Они служат для тестирования
    кэш-памяти, содержат специфическую информацию о процессе выполнения программы
    (количество декодированных команд, полученных запросов прерывания, число
    загрузок в кэш-память и т.п.), а также для выполнения некоторых других функций.
    Таких регистров уже в микропроцессорах серии Pentium
    насчитывалось более 80 и, судя по всему,
    в микропроцессорах  микроархитектур Intel Core и Nehalem их еще больше.
    Мы рассмотрим только первые две группы, наиболее
    значимые для дальнейшего понимания основных принципов функционирования
    микропроцессоров семейства Х86.
         1.  Пользовательские регистры

    Состав пользовательских регистров МП семейства Х86
    приведен на рис.II.1. На рисунке выделены 16 разрядные регистры,
    используемые в первых моделях МП этого семейства (8086, 80186 и 80286). Пользовательские
    регистры подразделяются на:
    – регистры общего назначения (РОН);
    – сегментные регистры;
    – регистр указатель инструкций;
    – регистр флагов.
    Регистры общего назначения
    Восемь 32-битных регистров общего назначения
    используются для текущего хранения данных и адресов. Буква E в названии
    регистров означает «расширенный» (Extended). Отметим, что для всех РОН допускается
    адресация в командах их младших 16-битных половин, как AX, BX, CX, DX, SP, BP,
    SI, DI. Кроме того, в первых четырех РОН отдельно адресуются как младшие (Low),
    так и старшие байты (High) этих регистров. Таким образом, в программах также можно
    указывать, по отдельности,  имена регистров AL, BL, CL, DL и AH, BH, CH, DH. Это
    сделано для возможности использования  программ, разработанных для младших
    моделей процессоров семейства Х86. Таким образом, первые четыре регистра РОН
    позволяют процессору легко оперировать байтами, словами и двойными словами. Однако,
    старшие половины регистров EAX, EBX, ECX, EDX, отдельно адресовать нельзя. РОН
    участвует в командах операций с данными, а также применяется при использовании
    различных режимах адресации. При этом, в старших моделях семейства, начиная с
    МП 80386, все первые четыре РОН можно использовать для адресации операндов, как
    в качестве базовых, так и в качестве индексных регистров.
    Вместе с тем, каждый из регистров общего назначения в
    некоторых командах выполняет специальные функции, что нашло отражение и в
    названиях регистров. Рассмотрим эти специальные функции РОН более подробно.
    EAX/AX/ALрегистр
    аккумулятор (Accumulator). Этот регистр наиболее часто используется для
    хранения промежуточных данных, поскольку многие команды оперируют данными в
    регистре аккумуляторе несколько быстрее, чем в других регистрах. Кроме того,
    при операциях умножения/деления, множимое/делимое всегда содержится в
    аккумуляторе до выполнения самой операции, а после операции в нем запоминается
    произведение/частное. Причем, при умножении байтовых операндов, множимое
    хранится в регистре AL, а произведение – в регистре AX. При умножении слов,
    множимое хранится в регистре AX, а произведение – в регистре EAX. При
    умножении двойных слов, множимое хранится в регистре EAX, а произведение запоминается
    в двух регистрах: младшие два байта – в регистре EAX, а старшие два байта – в
    регистре EDX.
    1. Регистры общего назначения

    2. Указатель
    инструкции (IP) и регистр флагов (FLAGS)

    3. Сегментные
    регистры

  8. VideoAnswer Ответить

Добавить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *