IP (регистр процессора)

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Qldor (обсуждение | вклад) в 17:25, 30 ноября 2009. Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

У термина IP существуют и другие значения, см. IP (значения).

IP (англ. Instruction Pointer) - регистр, содержащий адрес смещение следующей команды подлежащей исполнению относительно кодового сегмента CS в IBM-PC совместимых компьютерах. Регистр IP связан с CS в виде CS:IP, где CS является текущим кодовым сегментом, а IP текущим смещением относительно этого сегмента.
Регистр IP является 16 разрядным регистром-указателем. Кроме него в состав регистров этого типа входят SP - указатель стека (англ. Stack Pointer) и BP - базовый указатель (англ. Base Pointer).

Принцип работы регистра IP

Например, CS содержит значение 2CB5[0]H, в регистре IP хранится смещение 123H. Адрес следующей инструкции, подлежащей исполнению вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:

2CB50H + 123H = 2CC73H

Таким образом, адрес следующей инструкции для исполнения равен 2CC73H.
При выполнении текущей инструкции процессор автоматически изменяет значение в регистре IP, в результате чего регистровая пара CS:IP всегда указывает на следующую подлежащую исполнению инструкцию.

32-разрядный указатель инструкций

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

См. также