Assembly Registers

İş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:

  1. 32 bit veri registerları: EAX, EBX, ECX, EDX
  2. 32 bitlik registerların alt yarıları dört adet 16 bitlik veri registerı olarak kullanılabilir: AX, BX, CX ve DX
  3. 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

registers

İş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.

basepointer

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.

indexpo

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.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s