ФЭНДОМ


Аннотация к последующим статьямПравить

Это руководство использует специальное представление инструкций, шестнадцатеричных и двоичных чисел. Ознакомление с аннотацией поможет вам лучше понимать последующий текст.

Расположение битов и байтовПравить

В иллюстрациях структур данных в памяти меньшие адреса располагаются внизу фигуры; адреса возрастают снизу вверх. Биты позиционированы справа налево. Фигура 1.1 иллюстрирует это.

Файл:Bits.png

Зарезервированные биты и совместимость приложенийПравить

Во многих описаниях полей памяти и регистров встречаются биты, маркированные как зарезервированные. Биты зарезервированы для совместимости с будущими моделями процессоров. Приложения должны следовать следующим правилам по отношению к таким битам:

  • Никогда не получать информацию от зарезервированных битов.
  • Никогда не обращаться к таким битам.
  • Когда вы загружаете регистр, всегда загружайте зарезервированные биты со значениями по умолчанию.
  • Исключайте зависимость приложений от зарезервированных битов. Программа, которая опирается на значения таких битов, может стать несовместимой со следующими версиями процессоров.

Операнды инструкцийПравить

Когда инструкции представляются символически, используется язык ассемблера с синтаксисом IA-32. Здесь инструкции имеют следующий формат:

Label: mnemonic argument1, argument2, argument3

где:

Label (метка) – идентификатор, после которого следует двоеточие.

Mnemonic - это зарезервированное имя для класса кодов операндов (опкодов) инструкции (мнемоническое имя). Операнды argument1, argument2, и argument3 не обязательны. Их количество может варьироваться от нуля до трех, в зависимости от опкода. Когда они представлены, они принимают форму литералов или идентификаторов данных. Идентификаторы операндов - это такие же зарезервированные имена регистров, либо имена, присвоенные к типам данных, объявленных в другой части программы (которые могут быть не показаны в примерах).

Когда два операнда представлены в математической или логической инструкции, то правый операнд - операнд-источник, а левый – операнд-приёмник. Например:

LOADREG: MOV EAX, SUBTOTAL

В этом примере LOADREG это метка, MOV – мнемонический идентификатор опкода, EAX – операнд-приемник, а SUBTOTAL является операндом-источником. Некоторые языки ассемблера меняют местами операнд-источник и операнд-приемник.


Шестнадцатеричные и десятичные числаПравить

Числа с базой исчисления 16 (шестнадцатеричные) представлены строкой, которая оканчивается на символ H (например, F82Eh). Шестнадцатеричное число это число, которое составляется из следующего набора символов:

0 1 2 3 4 5 6 7 8 9 A B C D E F

Бинарные числа (двоичные) представляются строкой из нулей и единиц, которые иногда заканчиваются символом B (например, 1010b). Символ «B» ставится только тогда, когда нельзя сразу увидеть тип данных числа.


Сегментная адресацияПравить

Процессор использует байтовую адресацию. Это значит, что память организовывается и считывается как набор байтов. Область памяти, которая может быть адресована называется адресным пространством. Процессор также поддерживает сегментную адресацию. Эта такая форма адресации, при которой программа может иметь много независимых адресных пространств, которые и называются сегментами. Например, программа может хранить собственный код (инструкции) и стек в разных сегментах. Адреса кода ссылаются только на область кода, а адреса стека – на область стека. Следующий пример показывает способ обращения к специфическому адресу внутри сегмента:

Регистр сегмента : базовый адрес

Например, следующий адрес сегмента берет FF79h в сегменте, указывающем на DS (сегмент данных):

DS: FF79h

А здесь EIP содержит адрес инструкции в сегменте кода:

CS: EIP


Синтаксис CPUID, CR, и MSRПравить

Получать специальные флаги, состояние, информацию о системе, используя инструкцию CPUID, с помощью проверки битов командных регистров и чтения, специфичных для модели (MSR) регистров. Смотрите фигуру 1.2

Файл:Cpuid.png

ИсключенияПравить

Исключение – это событие, которое обычно появляется в случае, если инструкция вызвала ошибку. Например, исключение вызывает попытка разделить на ноль. Но некоторые исключения (например, точки останова) генерируются с другими условиями. Некоторые исключения предоставляют код ошибки, который сообщает дополнительную информацию о произошедшей ошибке. Далее показан пример, демонстрирующий исключение и код ошибки:

#PF (код ошибки)

Пример описывает ошибку страницы (page fault). В некоторых случаях исключения не могут содержать код ошибки, как, например, исключение генеральной защиты (GPF):

#GP (0)

ЛитератураПравить

Список литературы, описывающей процессоры архитектуры IA-32 можно посмотреть по адресу: http://developer.intel.com/design/processor/

Некоторые документы, встречающиеся в списке, могут быть просмотрены он-лайн, некоторые можно заказать. Доступна следующая литература по этой теме: datasheets, руководства, бумаги и обновления спецификаций.

Смотрите также: • Datasheet для процессоров Intel IA-32 процессоров • Обновления спецификация для каждого из Intel IA-32 процессоров • AP-485, Intel Processor Identification and the CPUID Instruction, Номер заказа 241618 • IA-32 Intel® Architecture Optimization Reference Manual, Номер заказа 248966

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.