İşlemci operasyonları genellikle işlenmekte olan verileri içerir. Bu veriler bellekte saklanabilir ve bunların üzerinden erişim sağlanabilir. Ancak bellekten veri okuma ve verileri belleğe kaydetme işlemleri işlemciyi yavaşlatır. Çünkü veri talebini, kontrol veriyolu (control bus) üzerinden bellek depolama ünitesine göndermek ve aynı kanaldan veri almak karmaşık işlemlerden oluşur.
İşlemci, işlemlerini hızlandırmak için register adı verilen dahili bellek depolama alanları içerir.
Registerlar, belleğe erişmek zorunda kalmadan işlenecek olan verileri saklar. İşlemci çipinde sınırlı sayıda register bulunur.
İşlemci Registerları
32 bit Intel mimarisinde 10 tane 32-bit ve 6 tane 16-bit işlemci registerı bulunmaktadır. Bu registerlar 3 kategoride gruplandırılmıştır:
- Genel registerlar
- Kontrol registerları
- Segment registerları
Genel registerlar ayrıca aşağıdaki gruplara ayrılmıştır:
- Veri registerları
- İşaretçi (pointer) registerları
- Index registerları
Veri registerları
Aritmetik, mantıksal ve diğer işlemler için dört adet 32-bit veri kaydı kullanılır. Bu 32-bit registerlar üç şekilde kullanılabilir:
- 32 bit veri registerları: EAX, EBX, ECX, EDX
- 32 bitlik registerların alt yarıları dört adet 16 bitlik veri registerı olarak kullanılabilir: AX, BX, CX ve DX
- Yukarıda belirtilen dört adet 16 bitlik yazıcının alt ve üst yarıları sekiz adet 8 bitlik veri kaydı olarak kullanılabilir: AH, AL, BH, BL, CH, CL, DH ve DL
İşaretçi (pointer) registerları
İşaretçi registerları, 32-bit EIP, ESP ve EBP registerları ve bunlara karşılık gelen 16-bit sağ kısımları IP, SP ve BP’den oluşur. İşaretçi registerları üçe ayrılır:
- Instruction Pointer: 16 bit IP registerı, bir sonraki komutun ofset adresini saklar.
- Stack Pointer: Program yığını içindeki veri veya adresin ofset değerini verir.
- Base Pointer: Fonksiyonun başında genellikle ESP ile eşittir. Fonksiyon parametrelerine ve yerel değişkenlere, sırasıyla Base Pointer’dan sabit bir değer çıkarılarak veya eklenerek erişilebilir. Tüm x86 arama kuralları, Base pointer’ı fonksiyon aramalarında korunmuş olarak tanımlar.
Index registerları
32-bit index registerları ESI, EDI ve bunların 16-bit en sağdaki bölümleri SI ve DI indekslenmiş adresleme için ve bazen de toplama/çıkarma işlemlerinde kullanılır.
- Source Index (SI): String işlemleri için kaynak indeksi olarak kullanılır.
- Destination Index (DI): string işlemleri için hedef indeks olarak kullanılır.
Kontrol Registerları
Kontrol registerı, CPU’nun veya başka bir dijital cihazın genel davranışını değiştiren veya kontrol eden bir işlemci registerıdır. Kontrol registerları tarafından gerçekleştirilen genel görevler, kesme (interrupt) kontrolü, adresleme modunu değiştirme, çağrı kontrolü ve yardımcı işlemci kontrolüdür.
Segment Registerları
Segmentler, bir programda veri, kod ve yığın içeren bir alandır. Üç ana bölüm vardır:
- Kod segmenti: Yürütülecek tüm talimatları içerir. Kod bölümünün başlangıç adresini saklar.
- Veri segmenti: Veri, sabitler ve çalışma alanları içerir. Veri bölümünün başlangıç adresini saklar.
- Yığın (stack) segmenti: Alt programların veri ve return adreslerini içerir. Yığının başlangıç adresini saklar.
Segment registerı, segmentlerin başlangıç adreslerini saklar. Bir segment içindeki verilerin veya talimatların tam yerini bulmak için bir ofset değeri gereklidir. Bir segmentteki herhangi bir hafıza konumuna referans vermek için işlemci, segment registerındaki segment adresini, konumun ofset değeriyle birleştirir.