IP (регистр процессора)
У термина 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.