Yazmaçlar vs Bellek
Coddy'nin Assembly Journey'sinin Temeller bölümünün bir parçası — ders 3 / 45.
Artık bir bilgisayarın içinde verilerin bulunabileceği iki yer hakkında bilgi edindiniz:
- Yazmaçlar (Registers) — CPU'nun içindeki küçük depolama kutuları
- Bellek (RAM) — CPU'nun dışındaki numaralandırılmış yuvalardan oluşan devasa bir ızgara
Peki neden iki yer var? İşlemci (CPU) neden doğrudan bellekle çalışamıyor?
Cevap hızdır. Yazmaçlar son derece hızlıdır çünkü CPU'nun içindedirler. Bellek daha yavaştır çünkü dışarıdadır. CPU bir yazmaca tek bir döngüde erişebilir, ancak belleğe erişmek çok daha uzun sürer.
Yan yana karşılaştırma:
| Özellik | Yazmaçlar (Registers) | Bellek (RAM) |
|---|---|---|
| Konum | İşlemci (CPU) içinde | İşlemci (CPU) dışında |
| Hız | Son derece hızlı (1 döngü) | Daha yavaş (birçok döngü) |
| Depolama yuvası sayısı | Çok az (x86-64 üzerinde 16-32 adet) | Milyonlarca veya milyarlarca |
| Her yuvanın boyutu | 8 bayt (64 bit) | 1 bayt |
| Erişim yöntemi | İsim ile (rax, rbx, rcx...) | Adres ile (1000, msg, buffer) |
| Uçucu mu? (Volatile) | Evet (güç kesildiğinde kaybolur) | Evet (güç kesildiğinde kaybolur) |
Assembly'deki en önemli kural:
İşlemci (CPU), bellekteki verilerle doğrudan çalışamaz. Veriler önce kaydedicilere (register) yüklenmelidir.
Bu isteğe bağlı değildir. İşlemcinin (CPU) tasarım şekli budur. Her toplama, her karşılaştırma, her veri taşıma işlemi bir kaydediciden (register) geçmelidir.
Sürekli kullanacağınız üç adımlı model:
| Adım | Ne olur | Örnek |
|---|---|---|
| 1. YÜKLE (LOAD) | Veriyi bellekten bir kaydediciye (register) kopyalayın | mov rax, [count] |
| 2. İŞLE (WORK) | Kaydedici ile bir işlem yapın | add rax, 5 |
| 3. KAYDET (STORE) | Sonucu tekrar belleğe kopyalayın (gerekirse) | mov [result], rax |
Bu kuralı unutursanız ne olur?
Bellekte bulunan iki sayıyı toplamaya çalışırsanız, assembler size bir hata verecektir. CPU bunu basitçe yapamaz. Önce onları yazmaçlara (registers) yüklemelisiniz.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.