Топики по английскому языку / топики/BASIC EXECUTION ENVIRONMENT.doc



This chapter describes the basic execution environment of an IA-32 processor as seen by assembly-language programmers. It describes how the processor executes instructions and how it stores and manipulates data. The execution environment described here includes memory (the address space), general-purpose data registers, segment registers, the flag register, and the instruction pointer register.


The IA-32 architecture supports three basic operating modes: protected mode, real-address mode, and system management mode. The operating mode determines which instructions and architectural features are accessible:

Protected mode — This mode is the native state of the processor. Among the capabilities of protected mode is the ability to directly execute “real-address mode” 8086 software in a protected, multi-tasking environment. This feature is called virtual-8086 mode, although it is not actually a processor mode. Virtual-8086 mode is actually a protected mode attribute that can be enabled for any task.

Real-address mode — This mode implements the programming environment of the Intel 8086 processor with extensions (such as the ability to switch to protected or system management mode). The processor is placed in real-address mode following power-up or a reset.

System management mode (SMM) — This mode provides an operating system or executive with a transparent mechanism for implementing platform-specific functions such as power management and system security. The processor enters SMM when the external SMM interrupt pin (SMI#) is activated or an SMI is received from the advanced programmable interrupt controller (APIC).

In SMM, the processor switches to a separate address space while saving the basic context of the currently running program or task. SMM-specific code may then be executed transparently. Upon returning from SMM, the processor is placed back into its state prior to the system management interrupt. SMM was introduced with the Intel386™ SL and Intel4 86™ SL processors and became a standard IA-32 feature with the Pentium processor family.


3.1.1 IA-32e Mode

The Intel® Extended Memory 64 Technology (Intel® EM64T) extends the IA-32 architecture’s basic operating modes and adds a new mode of operation: IA-32e mode. IA-32e mode has two sub-modes. These are:

Compatibility mode (sub-mode of IA-32e mode) — Compatibility mode permits most legacy 16-bit and 32-bit applications to run without re-compilation under a 64-bit operating system. For brevity, the compatibility sub-mode is referred to as compatibility mode in IA-32 architecture. The execution environment of compatibility mode is the same as described in Section 3.2. Legacy applications that run in Virtual 8086 mode or use hardware task management will not work in this mode.

Compatibility mode is enabled by the operating system (OS) on a code segment basis. This means that a single 64-bit OS can support 64-bit applications running in 64-bit mode and support legacy 32-bit applications (not recompiled for 64-bits) running in compatibility mode.

Compatibility mode is similar to 32-bit protected mode. Applications access only the first 4 GByte of linear-address space. Compatibility mode uses 16-bit and 32-bit address and operand sizes. Like protected mode, this mode allows applications to access physical memory greater than 4 GByte using PAE (Physical Address Extensions).

64-bit mode (sub-mode of IA-32e mode) — This mode enables a 64-bit operating system to run applications written to access 64-bit linear address space. For brevity, the 64-bit submode is referred to as 64-bit mode in IA-32 architecture.

64-bit mode extends the number of general purpose registers and SIMD extension registers from 8 to 16. General purpose registers are widened to 64 bits. The mode also introduces a new opcode prefix (REX) to access the register extensions. See Section 3.2.1 for a detailed description.

64-bit mode is enabled by the operating system on a code-segment basis. Its default address size is 64 bits and its default operand size is 32 bits. The default operand size can be overridden on an instruction-by-instruction basis using a REX opcode prefix in conjunction with an operand size override prefix.

REX prefixes allow a 64-bit operand to be specified when operating in 64-bit mode. By using this mechanism, many existing instructions have been promoted to allow the use of 64-bit registers and 64-bit addresses.

Vol. 1 3-3



Any program or task running on an IA-32 processor is given a set of resources for executing instructions and for storing code, data, and state information. These resources (described briefly in the following paragraphs and shown in Figure 3-1) make up the basic execution environment for an IA-32 processor. The basic execution environment is used jointly by the application programs and the operating system or executive running on the processor.

Address space — Any task or program running on an IA-32 processor can address a linear address space of up to 4 GBytes (232 bytes) and a physical address space of up to 64 GBytes (236 bytes). See Section 3.3.6, “Extended Physical Addressing in Protected Mode” for more information about addressing an address space greater than 4 GBytes.

Basic program execution registers — The eight general-purpose registers, the six segment registers, the EFLAGS register, and the EIP (instruction pointer) register comprise a basic execution environment in which to execute a set of general-purpose instructions. These instructions perform basic integer arithmetic on byte, word, and doubleword integers, handle program flow control, operate on bit and byte strings, and address memory. See Section 3.4, “Basic Program Execution Registers”, for more information about these registers.

x87 FPU registers — The eight x87 FPU data registers, the x87 FPU control register, the status register, the x87 FPU instruction pointer register, the x87 FPU operand (data) pointer register, the x87 FPU tag register, and the x87 FPU opcode register provide an execution environment for operating on single-precision, double-precision, and double extendedprecision floating-point values, word integers, doubleword integers, quadword integers, and binary coded decimal (BCD) values. See Section 8.1, “x87 FPU Execution Environment”, for more information about these registers.

MMX™ registers — The eight MMX registers support execution of single-instruction, multiple-data (SIMD) operations on 64-bit packed byte, word, and doubleword integers. See Section 9.2, “The MMX Technology Programming Environment”, for more information about these registers.

XMM registers — The eight XMM data registers and the MXCSR register support execution of SIMD operations on 128-bit packed single-precision and double-precision floating-point values and on 128-bit packed byte, word, doubleword, and quadword integers. See Section 10.2, “SSE Programming Environment”, for more information about these registers.

Stack — To support procedure or subroutine calls and the passing of parameters between procedures or subroutines, a stack and stack management resources are included in the execution environment. The stack (not shown in Figure 3-1) is located in memory. See Section 6.2, “Stacks”, for more information about stack structure.


Эта глава(отделение) описывает основную среду(условия) выполнения процессора IA-32 как видно сборочными-языковыми программистами. Это(Он) описывает как процессор выполняет инструкции(команда) и как это(он) загружает и манипулирует данными. Описанная среда(условия) выполнения здесь включает память(воспоминания) ( пространство(пробел) адреса), данные общего назначения регистрируется, сегментные регистры, регистр флага, и указатель инструкции(команда) register.


Архитектура IA-32 поддерживает три основных операционных режима(мода): защитившее режим(мода), реальный адрес режима(мода), и системный режим(мода) управления. Операционный режим(мода) определяет какие инструкции(команда) и архитектурные характеристики доступны:

o Защищенный режим(мода) - Этот режим(мода) является(находиться) исконным состоянием(штат) процессора. Среди возможностей защищенного режима(мода) - способность непосредственно выполнять "реальному адресу режима(мода)" 8086 программных обеспечения в(в течение;через) защищенной, многозадачной среде(условия). Эта характеристика названа(вызывать;созывать) virtual-8086 режим(мода), хотя она(он) - не действительно режим(мода) процессора. режим(мода) Virtual-8086 является(находиться) действительно защищенным атрибутом режима(мода), который может быть приспособлен(быть позволять) для(за;в течение) любого task.

o Реальный адрес режима(мода) - Этот режим(мода) осуществляет программирующую среду(условия) процессора Intel 8086 с расширениями (как например, способность переключать(выключать) на защищенное или системный режим(мода) управления). Процессор установлен в(в течение;через) реальном адресе режима(мода) следующего включения питания или reset.

o режим(мода) управления Системы (SMM) - Этот режим(мода) обеспечивает(предоставлять) операционную систему или должностное лицо с прозрачным механизмом для(за;в течение) осуществляющих платформа-специфических функций как например, силовое управление и системная безопасность. Процессор вводит(входить;выводить) SMM когда внешний штырек прерывания SMM (SMI#), активизирован или SMI получен из(от;с;от) передового(улучшенный) программируемого диспетчера(контроллер) прерывания (APIC

В(В течение;Через) SMM, процессор переключает(выключать) на отдельное пространство(пробел) адреса при экономии основного контекста к настоящему времени прогона программы или задачи(задание). СПЕЦИФИЧЕСКИЙ код(кодекс) SMM-может затем выполняться(оформлять) точно. В(О;С) возврате из(от;с;от) SMM, процессор установлен снова в свое состояние(штат) до системного прерывания управления. SMM БЫЛ ВВЕДЕН(БЫЛ ПРЕДСТАВЛЯТЬ) Intel386 SL и Intel4 86 процессоры SL и становились стандартной характеристикой IA-32 с процессором Pentium family.


3.1.1 Режима(Мода) IA-32e

Intel Расширившее(Распространять) Технологию Памяти(Воспоминания) 64 (Intel EM64T), расширяет(распространять) IA-32 архитектура основные операционные режимы(мода) и добавляет новый режим(мода) операции(управление): режим(мода) IA-32e. режим(мода) IA-32e имеет два под-режимы(мода). Эти:

o режим(мода) Совместимости (под-режим(мода) режима(мода) IA-32e) - режим(мода) Совместимости разрешает наиболее 16- бит(кусочек) наследства и 32-битовых приложений(заявка), чтобы работать(достигать) без см.- компиляции под(по) 64- битовой операционной системой. Для(За;В течение) краткости, совместимость под-режим(мода) называется режим(мода) совместимости в(в течение;через) архитектуре IA-32. Среда(Условия) выполнения режима(мода) совместимости такая же как и описанное в(в течение;через) Разделе 3.2. Приложения(Заявка) Наследства, что(, чтобы) прогон в(в течение;через) Виртуальных 8086 режимах(мода) или управление аппаратной задачи(задание) использования не будет работать в(в течение;через) этом mode.

Режим(Мода) Совместимости приспособлен(позволять) операционной системой (OS) на кодовой сегментной основе(база). Это означает(хотеть;предназначаться), что(, чтобы) единственный 64- бит(кусочек) OS может поддержать 64- битовые приложения(заявка), работающие в(в течение;через) 64- битовом режиме(мода) и поддержке 32- битовых приложений(заявка) наследства (не перекомпилированное для(за;в течение) 64- битов(кусочек)) работая на(в течение;через) совместимости mode.

Режим(Мода) Совместимости подобный 32- биту(кусочек) защитившему режим(мода). Приложения(Заявка) имеют доступ к только первым 4 GByte линейного адреса пространства(пробел). Режим(Мода) Совместимости использует 16- бит(кусочек) и 32-битовые размеры адреса и операнда. Подобно защищенному режиму(мода), этот режим(мода) позволяет, чтобы иметь доступ к физической памяти(воспоминания) больше, чем 4 GByte, использовавший PAE (Физические Расширения Адреса

o 64- битовый режим(мода) (под-режим(мода) режима(мода) IA-32e) - Этот режим(мода) позволяет 64- битовую операционную систему, чтобы запускать(бежать;работать;достигать) приложения(заявка) записанные, чтобы иметь доступ к 64- битовому линейному пространству(пробел) адреса. Для(За;В течение) краткости, 64- битовый submode называется 64- битовый режим(мода) в(в течение;через) architecture. IA-32

64- битовый режим(мода) расширяет(распространять) количество универсальных регистров и расширение SIMD регистрируется от 8 до 16. Универсальные регистры расширены на(для;до) 64 битов(кусочек). Режим(Мода) также вводит(представлять) новый opcode префикс (REX), чтобы иметь доступ к расширениям регистра. Смотри Секцию(Раздел) 3.2.1 для(за;в течение) подробного description.

64- битовый режим(мода) приспособлен(позволять) операционной системой на кодовой-сегментной основе(база). По умолчанию размер адреса - 64 битов(кусочек) и по умолчанию размер операнда - 32 бита(кусочек). По умолчанию размер операнда может быть overridden в инструкции(команда)--базисным использованием инструкции(команда) REX opcode префикс в связи (вместе)с размером операнда аннулирует prefix.

ПРЕФИКСЫ REX допускают(позволять) 64- битовый операнд, который нужно определяться действуя в(в течение;через) 64- битовом режиме(мода). Используя этот механизм, много существуя инструкции(команда) получили должность допускать(позволять) использование 64- битовых регистров и 64- бита(кусочек) addresses.

Vol. 1 3-3



Любая программа или задача(задание), работающие на процессоре IA-32 даны установка ресурсов чтобы выполнять инструкции(команда) и для(за;в течение) хранения кода(кодекс), данных, и государственной информации. Эти ресурсы (описанное кратко в(в течение;через) следующих параграфах и показанных на Рисунке 3-1), создают основному выполнению среду(условия) для(за;в течение) процессора IA-32. Основная среда(условия) выполнения используется(привыкать;привыкать) совместно прикладными программами и операционная система или должностное лицо, работающими на processor.

o пространство(пробел) Адреса - Любая задача(задание) или программа, работающие на процессоре IA-32 могут адресовать(обращаться) линейное пространство(пробел) адреса вплоть до 4 GBytes (232 байта) и физическое пространство(пробел) адреса вплоть до 64 GBytes (236 байтов). Смотри Секцию(Раздел) 3.3.6, "Расширившее(Распространять) Медицинский осмотр, обращающийся в(в течение;через) Защищенный Режим(Мода)" более подробно об(около) адресации пространства(пробел) адреса больше, чем 4 GBytes.

o Основное программное выполнение регистрирует - восемь регистров общего назначения, шесть сегментных регистров, регистр EFLAGS, и EIP регистра (указатель инструкции(команда)) включает основную среду(условия) выполнения, чтобы выполнять установку инструкций(команда) общего назначения. Эти инструкции(команда) выполняют основной арифметике целого в байте, слове(известие), и целых двойного слова, оперировать программное управление потока, действовать в битовых и байтовых строках(струна;серия), и памяти(воспоминания) адреса. Смотри Секцию(Раздел) 3.4, "Основные Программные Регистры Выполнения", более подробно об(около) этом registers.

o регистры x87 FPU - восемь данных x87 регистры FPU, x87 управляющий регистр FPU, регистр статуса, инструкция(команда) x87 указатель регистра FPU, операнд x87 FPU (данные) регистр указателя, этикетка x87 регистр FPU, и x87 FPU opcode регистр обеспечивает(предоставлять) среду(условия) выполнения чтобы действовать на единственной-точности, двойная-точность, и двойное количество extendedprecision плавающая точка величин(значение), текстовых целых, целых двойного слова, quadword целых, и двоичный код кодировал десятичные величины(значение) (BCD). Смотри Секцию(Раздел) 8.1, "Выполнение x87 Среда(Условия) FPU", более подробно об(около) этом registers.

o MMX регистры - восемь выполнения поддержки регистров MMX единственной-инструкции(команда), многочисленных(составной)-данных (SIMD) операций(управление) на 64- бите(кусочек) упаковавшем(заполнять) байт, слово(известие), и целые двойного слова. Смотри Секцию(Раздел) 9.2, " Технология MMX, программирующие Среду(Условия)", более подробно об(около) этом registers.

o регистры XMM - восемь регистров данных XMM и выполнение поддержки регистра MXCSR операций(управление) SIMD на 128- бите(кусочек) упаковавшем(заполнять) единственную-точность и двойную-плавающую точку прецизионных величин(значение) и на 128- бите(кусочек) упаковавшем(заполнять) байт, слово(известие), двойное слово, и quadword целые. Смотри Секцию(Раздел) 10.2, "SSE, программирующую Среду(Условия)", более подробно об(около) этом registers.

o Стек -, чтобы поддерживать процедуру или подпрограммные вызовы(призыв) и прохождение параметров между процедурами или подпрограммами, стек и ресурсы управления стека включены в(в течение;через) среду(условия) выполнения. Стек (не показанное на Рисунке 3-1), расположены в(в течение;через) памяти(воспоминания). Смотри Секцию(Раздел) 6.2, "Стеки", более подробно о(около) стеке structure.