В процессоре имеется набор регистров, представляющих собой область памяти быстрого доступа» но намного меньшей емкости, чем основная память. Регистры процессора выполняют две функции.
• Регистры, доступные пользователю. Эти регистры позволяют программисту сократить число обращений к основной памяти, оптимизируя использование регистров с помощью машинного языка или ассемблера. В состав языков высокого уровня входят оптимизирующие компиляторы, построенные на алгоритмах, которые, в частности, позволяют определить, какие переменные следует заносить в регистры, а какие — в основную память. Некоторые языки высокого уровня такие, как С, предоставляют программисту возможность предложить компилятору хранить те или иные данные в регистрах.
• Регистры управления и регистры состояния. Используются в процессоре для контроля над выполняемыми операциями; с их помощью привилегированные программы операционной системы могут контролировать ход выполнения других программ.
Для разделения регистров на эти две категории не существует определенного признака. Например, на некоторых машинах оператор имеет возможность следить за состоянием программного счетчика, а на других — нет. Однако такое разделение удобно при дальнейшем рассмотрении.