Система регистров процессоров IA-32
Регистрами называются области высокоскоростной памяти, расположенные внутри процессора в непосредственной близости от его исполнительного ядра.
Доступ к ним осуществляется несравнимо быстрее, чем к ячейкам оперативной памяти. Соответственно, машинные команды с операндами в регистрах выполняются максимально быстро, поэтому в программах на языке ассемблера регистры используются очень интенсивно. К сожалению, архитектура IA-32 предоставляет в распоряжение программиста не слишком много регистров, поэтому они являются критически важным ресурсом и за их содержимым приходится следить очень внимательно.
Большинство регистров имеют определенное функциональное назначение. С точки зрения программиста, их можно разделить на две большие группы.
Первую группу образуют пользовательские регистры, к которым относятся:
─ регистры общего назначения ЕАХ/АХ/АН/АL, EBX/BX/BH/BL, EDX/DX/DH/DL, ЕСХ/CX/CH/CL, ЕВР/ВР, ESI/SI, EDI/DI, ESP/SP предназначены для хранения данных и адресов, программист может их использовать (с определенными ограничениями) для реализации своих алгоритмов;
─ сегментные регистры CS, DS, SS, ES, FS, GS используются для хранения адресов сегментов в памяти;
─ регистры сопроцессора ST(0), ST(1), ST(2), ST(3), ST(4), ST(5), ST(6), ST(7) предназначены для написания программ, использующих тип данных с плавающей точкой;
─ целочисленные регистры MMX-расширения ММХ0, MMX1, MMX2, ММХ3, ММХ4, ММХ5, ММХ6, ММХ7;
─ регистры MMX-расширения с плавающей точкой XMM0, XMM1, ХММ2, ХММ3, ХММ4, ХММ5, ХММ6, ХММ7;
─ регистры состояния и управления (регистр флагов ЕFLAGS/FLAGS и регистр-указатель команды EIP/IP) содержат информацию о состоянии процессора, исполняемой программы и позволяют изменить это состояние.
Во вторую группу входят системные регистры, то есть регистры, предназначенные для поддержания различных режимов работы, сервисных функций, а также регистры, специфичные для определенной модели процессора. Перечислять мы их не будем, т.к. их довольно много и в то же время их состав может изменяться в зависимости от типа процессора.