Что же такое регистры? Вы можете рассматривать их как ящики, которые могут содержать только одно слово, в то время как память состоит из последовательности слов. Всякий раз как новое значение помещается в регистр, старое значение теряется. Регистры позволяют осуществлять прямое взаимодействие между памятью и центральным процессором.
Первая буква 'e' в названиях регистров обозначает "extended - расширенный" и указывает на эволюцию от 16 битной к современной 32-х битной архитиктуре.
Регистры могут быть разделены на 4 категории:
регистры общего назначения: %eax, %ebx, %ecx и %edx, используются для манипулирования данными;
сегментные регистры: 16 битные %cs, %ds, %es и %ss, содержат первую часть адреса памяти;
регистры смещения: содержат смещения по отношению к сегментным регистрам:
%eip (Extended Instruction Pointer - расширенный указатель инструкции): указывает на адрес следующей инструкции для выполнения;
%ebp (Extended Base Pointer - расширенный указатель базы): указывает на начало локального окружения функции;
%esi (Extended Source Index - расширенный индекс источника): содержит смещение источника данных в операциях с блоком памяти;
%edi (Extended Destination Index - расширенный индекс назначения): содержит смещение данных назначения в операциях с блоком памяти;
специальные регистры: используются только центральным процессором.
Замечание: все сказанное здесь о регистрах относится только к x86, однако alpha, sparc и т.д. имеют регистры с другими именами, но с похожим назначением.