Programado
Docs» titletext

Программная модель процессора x86_64

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

Режимы работы

Архитектура x86-64 имеет два основных режима работы: Длинный режим (Long Mode) и устаревший режим (Legacy Mode).

Состояние Требуется
операционная
система
Тип
выполняе-
мого кода
Размер
(биты)
Кол-во
регистров
GPR
режим под-
режим
адреса операнды
(по умол-
чанию
выделен)
Длинный режим (Long Mode) 64-битный режим (64-bit mode) 64-разрядная ОС, 64-разрядная прошивка UEFI 64-бит 64 8, 16, 32, 64 16
Режим совместимости (Compatibility mode) Загрузчик или 64-битная ОС 32-битный защищенный режим 32 8, 16, 32 8
16-битный защищенный режим 16 8, 16, 32 8
Унаследо-
ванный режим (Legacy mode)
Защищенный режим (Protected mode) Загрузчик, 32-битная ОС или 32-разрядная прошивка UEFI 32-битный защищенный режим 32 8, 16, 32 8
16-битная ОС в защищенном режиме 16-битный защищенный режим 16 8, 16, 321 8
Режим виртуального 8086 (Virtual 8086 mode) 16-битная ОС в защищенном режиме или 32-битная ОС 16-битный защищенный режим подмно-
жество реального режима
8, 16, 321 8
Нереальный режим (Unreal mode) Загрузчик или ОС в реальном режиме реальный режим 16, 20, 32 8, 16, 321 8
Реальный режим (Real mode) Загрузчик, ОС реального режима или любая ОС, взаимодействующая с интерфейсом BIOS реальный режим 16, 20, 21 8, 16, 321 8

Обратите внимание, что 16-битный код, написанный для 80286 и ниже, не использует 32-битные инструкции операнда. Код, написанный для 80386 и более поздних версий, может использовать префикс переопределения размера операнда (0x66). Обычно этот префикс используется кодом защищенного и длинного режима с целью использования 16-битных операндов, поскольку этот код будет выполняться в сегменте кода с размером операнда по умолчанию, равным 32 битам. В реальном режиме размер операнда по умолчанию составляет 16 бит, поэтому префикс 0x66 интерпретируется иначе, изменяя размер операнда на 32 бита.

Архитектура x86-64 поддерживает три основных режима работы: защищенный, реальный и системного управления. Режим работы определяет какие инструкции и архитектурные функции доступны:

  • Реальный режим (real mode) — это режим, в который переходит процессор после включения или перезагрузки. Он реализует среду программирования процессора Intel 8086 с возможностью расширения (например, перехода в защищенный режим или режим системного управления). Это стандартный 16-разрядный режим, в котором доступно только 1 Мб физической памяти. Иногда этот режим называют режимом реальных адресов (real-address mode) , потому что в нем нельзя активировать механизм трансляции виртуальных адресов в физические. Это значит, что все адреса, к которым обращаются программы, являются физическими, т. е. без какого-либо преобразования будут выставлены на шину адреса. В этом режиме «родной» для процессора размер равен 2 байтам, или слову (WORD);

  • Защищённый режим (protected mode) — этот режим является основным режимом для 32-битных процессоров. Среди возможностей защищённого режима есть возможность напрямую запускать программное обеспечение 8086 в реальном режиме в защищённой многозадачной среде. Эта функция называется режимом виртуального 8086, хотя на самом деле это не режим процессора. Режим виртуального 8086 на самом деле - это атрибут защищённого режима, который можно включить для любой задачи. В этом режиме можно получить доступ к 4-гигабайтному физическому адресному пространству, если память, а при включении специального механизма трансляции адресов можно получить доступ к 64 Гб физической памяти. В защищённый режим можно перейти только из реального режима. Защищённый режим называется так потому, что позволяет защитить данные операционной системы от приложений. В этом режиме «родной» для процессора размер данных - это 4 байта, или двойное слово (DWORD). Все операнды, которые выступают в этом режиме как адреса, должны быть 32-битными;

  • Режим системного управления (System management mode — SMM) — этот режим предоставляет операционной системе или исполнительной системе прозрачный механизм для реализации специфичных для платформы функций, таких как управление питанием и безопасность системы. Процессор входит в SMM, когда активируется внешний контакт прерывания SMM (SMI#) или активируется при помощи прерываний (SMI), полученных от улучшенного программируемого контроллера прерываний (Advanced Programmable Interrupt Controller - APIC). Работа в режиме SMM приостанавливает работу операционной системы. Переход в этот режим возможен только аппаратно. В SMM процессор переключается на отдельное адресное пространство с сохранением основного контекста текущей работающей программы или задачи. Затем код, специфичный для SMM, может прозрачно выполняться. Вернувшись из SMM, процессор возвращается в состояние, предшествующее прерыванию. SMM появился в процессорах Intel386 TM SL и Intel486 TM SL и стали стандартной функцией в семействе процессоров Pentium.

  • Режим виртуального процессора 8086 (virtual mode 8086) - это подрежим защищённого режима для поддержки старых 16-разрядных приложений. Его можно включить для отдельной задачи в многозадачной операционной системе защищённого режима. Процессоры с архитектурой x86-64 поддерживают V86 только в режиме совместимости, но не в длинном режиме.

  • Длинный режим или 64-битный режим (Long Mode или 64-bit mode) — этот режим позволяет запускать приложения в 64-битной операционной системе, написанные для доступа к 64-битному линейному адресному пространству. В длинном режиме увеличивается количество регистров общего назначения и регистров SSE с 8 до 16. Регистры общего назначения расширены до 64 бит. В этом режиме также вводится новый префикс кода операции (REX) для доступа к расширениям регистров. 64-битный режим включается операционной системой на основе сегмента кода. В этом режиме размер адреса по умолчанию составляет 64 бита, а размер операнда по умолчанию — 32 бита. Размер операнда по умолчанию может быть переопределен для каждой инструкции с использованием префикса кода операции REX в сочетании с префиксом переопределения размера операнда. Префиксы REX позволяют указать 64-битный операнд при работе в 64-битном режиме. С помощью этого механизма многие существующие инструкции были расширены, чтобы разрешить использование 64-битных регистров и 64-битных адресов. По своему принципу работы он сходен с защищённым режимом, за исключением нескольких аспектов. В этом режиме можно получить доступ к 252 байтам физической памяти и к 248 байтам виртуальной памяти. В 64-разрядный режим можно перейти только из защищённого режима. В этом режиме «родной» для процессора размер данных - это 4 байта или двойное слово (DWORD), но можно оперировать данными размером в 8 байт. Размер адреса всегда 8 байтовый.

  • Режим совместимости (наследственный, Legacy Mode или Compatibility mode) — режим совместимости позволяет использовать большинство устаревших 16-разрядных и 32-битных приложений для запуска без перекомпиляции под 64-битной операционной системой. Режим совместимости также поддерживает все уровни привилегий, которые поддерживаются в 64-битном и защищенном режимах. Устаревшие приложения, работающие в режиме виртуального 8086 или использующие аппаратное управление задачами в этом режиме работать не будет. Режим совместимости включается операционной системой на основе сегмента кода. Это означает, что 64-разрядная ОС может одновременно поддерживать 64-разрядные приложения, работающие в 64-разрядном режиме (Long Mode), и поддерживать устаревшие 32-разрядные приложения (без перекомпиляции под 64-бит), которые работают в режиме совместимости. Режим совместимости аналогичен 32-битному защищенному режиму. Приложения получают доступ только к первым 4 ГБ линейной памяти адресного пространства. В режиме совместимости используются 16-битные и 32-битные адреса и размеры операндов. Как и в защищенном режиме, этот режим позволяет приложениям получать доступ к физической памяти объемом более 4 ГБ с помощью PAE (Physical Address Extensions). В режиме совместимости «родной» для процессора размер данных - это двойное слово.

Базовая среда выполнения в режиме x86

Любая программа или задача, работающая на процессоре x86 получает набор ресурсов для выполнения инструкций, а также для хранения кода, данных и информации о состоянии. Эти ресурсы составляют базовую среду выполнения для процессора x86.

Процессоры Intel 64 и amd64 поддерживают базовую среду выполнения процессора, которая может выполнять 64-битные программы (длинный режим) и 32-битные программы (режим совместимости). Базовая среда выполнения используется совместно прикладными программами и операционной системой или исполнительной системой, работающей на процессоре.

  • Адресное пространство — любая задача или программа, работающая на процессоре x86, может обращаться к линейному адресному пространству до 4 ГБ (232 байта) и физическому адресному пространству до 64 ГБ (236 байт).
  • Основные регистры — восемь регистров общего назначения, шесть сегментных регистров, регистр флагов EFLAGS и регистр EIP (указатель инструкций) составляют базовую среду выполнения, в которой можно выполнять набор инструкций общего назначения. Эти инструкции выполняют базовые целочисленные арифметические операции над целыми числами в виде байтов, слов и двойных слов, управляют потоком программы, работают с битовыми и байтовыми строками и адресуют память.
  • регистры сопроцессора — восемь регистров данных x87 FPU, регистр управления x87 FPU, регистр состояния, регистр указателя инструкций x87 FPU, регистр указателя операндов (данных) x87 FPU, регистр тегов x87 FPU и регистр кода операции x87 FPU. предоставить среду выполнения для работы со значениями с плавающей запятой одинарной точности, двойной точности и двойной расширенной точности, целыми словами, целыми числами в виде двойных слов, целыми числами в виде четырех слов и двоично-десятичными значениями (BCD).
  • Регистры MMX — восемь целочисленных 64-битных регистров MMX, поддерживающих операции SIMD (позволяют параллельно обрабатывать несколько элементов данных в одной инструкции) над 64-битными упакованными целыми числами в виде байтов, слов и двойных слов.
  • Регистры XMM — восемь регистров данных XMM и регистр MXCSR поддерживают выполнение операций SIMD над 128-битными упакованными значениями с плавающей запятой одинарной и двойной точности, а также над 128-битными упакованными целыми числами в виде байтов, слов, двойных слов и четверных слов.
  • Регистры YMM — регистры данных YMM поддерживают выполнение 256-битных SIMD-операций с 256-битными упакованными значениями с плавающей запятой одинарной и двойной точности, а также с 256-битными упакованными целыми числами в виде байтов, слов, двойных слов и четверных слов.
  • Регистры границ — каждый из 128-битные регистров границ диапазона BND0-BND3 хранит нижнюю и верхнюю границы (по 64 бита каждая), связанные с указателем на буфер памяти. Они поддерживают выполнение инструкций Intel MPX (Memory Protection Extension).
  • BNDCFGU и BNDSTATUS — регистр BNDCFGU настраивает операции MPX пользовательского режима при проверке границ. BNDSTATUS предоставляет дополнительную информацию о #BR, вызванном операцией MPX.
  • Стек — для поддержки вызовов процедур или подпрограмм и передачи параметров между процедурами или подпрограммами, в среду выполнения x86 включены стек и ресурсы управления стеком. Стек располагается в памяти.
|
Базовая среда выполнения x86 без поддержки 64-режима.

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

  • Порты ввода/вывода — архитектура x86 поддерживает передачу данных в/из порты ввода/вывода (I/O).
  • Регистры управления — пять регистров управления (от CR0 до CR4) определяют режим работы процессора и характеристики выполняемой в данный момент задачи.
  • Регистры управления памятью — GDTR, IDTR, TR и LDTR указывают расположение структур данных, используемых в управлении памятью в защищенном режиме.
  • Регистры отладки — регистры отладки (от DR0 до DR7) контролируют и позволяют отслеживать операции отладки процессора.
  • Диапазонные регистры типа памяти (MTRR) — MTRR используются для назначения типов памяти областям памяти.
  • Моделезависимые регистры (MSR) — специальные регистры процессоров архитектуры x86, наличие и назначение которых отличается в разных моделях. Они используются для управления производительностью процессора и составления отчетов о ней. Практически все MSR выполняют функции, связанные с системой, и недоступны для прикладной программы. Единственным исключением из этого правила является счетчик меток времени.
  • Регистры проверки компьютера (MCG_CAP MCG_STAT MCG_CTL и т.д.) — состоят из набора управления, состояния и отчетов об ошибках в моделезависимых регистрах, которые используются для обнаружения и сообщения об аппаратных (машинных) ошибках.
  • Счетчики мониторинга производительности — позволяют отслеживать события, связанные с производительностью процессора.

Базовая среда выполнения в режиме x64

Среда выполнения для 64-битного режима аналогична 32-битному с несколькими отличиями:

  • Адресное пространство — задача или программа, работающая в 64-битном режиме, может адресовать линейное адресное пространство до 264 байт и физическое адресное пространство до до 252 байт. Программное обеспечение может запрашивать у CPUID размер физического адреса, поддерживаемого процессором.
  • Основные регистры выполнения программы — количество доступных регистров общего назначения (GPR) равно 16. GPR имеют разрядность 64 бита и поддерживают операции с целыми числами в виде байтов, слов, двойных и четверных слов. Доступ к байтовым регистрам осуществляется равномерно до младших 8 бит. Регистр указателя команд становится 64-битным. Регистр EFLAGS расширен до 64 бит и называется регистром RFLAGS. Старшие 32 бита RFLAGS зарезервированы. Младшие 32 бита RFLAGS аналогичны EFLAGS.
  • Регистры XMM — количество регистров XMM увеличено до шестнадцати.
  • Регистры YMM — количество регистров YMM увеличено до шестнадцати.
  • Стек — размер указателя стека составляет 64 бита. Размер стека не контролируется битом в дескрипторе SS (как в не 64-битных режимах), и размер указателя не может быть переопределен префиксом инструкции.
  • Регистры управления — регистры управления расширены до 64 бит. Добавлен новый управляющий регистр (регистр приоритета задачи: CR8 или TPR).
  • Регистры отладки — регистры отладки расширены до 64 бит.
  • Регистры таблицы дескрипторов -регистр глобальной таблицы дескрипторов (GDTR) и регистр таблицы дескрипторов прерываний (IDTR) расширяются до 10 байт, чтобы они могли содержать полный 64-битный базовый адрес. Регистр локальной таблицы дескрипторов (LDTR) и регистр задач (TR) также расширяются, чтобы содержать полный 64-битный базовый адрес.
|
Базовая среда выполнения x86-64 в 64-битном режиме.
Previous Next

Programado

Table of Contents

Содержание

  • Программная модель процессора x86_64
    • Режимы работы
    • Базовая среда выполнения в режиме x86
    • Базовая среда выполнения в режиме x64

Содержание

  • Kivy
  • Процессор_x86-64
  • Вход