Yazmaçlar vs Bellek
Coddy'nin Assembly Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 3 / 45.
Artık bir bilgisayarın içinde verilerin bulunabileceği iki yeri öğrendin:
- Yazmaçlar: CPU’nun içindeki küçük depolama kutuları
- Bellek (RAM): CPU’nun dışındaki, numaralandırılmış yuvalardan oluşan dev bir ızgara
Ama neden iki yer var? CPU neden her şeyi bellekte tutmuyor?
Yanıt hızdır. Yazmaçlar CPU'nun içinde oldukları için son derece hızlıdır. Bellek, CPU'nun dışında olduğu için daha yavaştı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 | Bellek (RAM) |
|---|---|---|
| Konum | CPU'nun içinde | CPU'nun 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'te 16-32) | Milyonlarca veya milyarlarca |
| Her yuvanın boyutu | 8 bayt (64 bit) | 1 bayt |
| Bunlara nasıl erişilir | Adla (rax, rbx, rcx...) | Adresle (1000, msg, buffer) |
| Uçucu mu? | Evet (güç kapatıldığında kaybolur) | Evet (güç kapatıldığında kaybolur) |
Assembly dilindeki en önemli kural:
Bir komut en fazla bir bellek işleneni kullanabilir. Bellekte bulunan iki değeri birleştirmek için önce bunlardan birini bir yazmaca yükleyin.
Register'lar, üzerinde çalıştığın değerleri sakladığın yerlerdir; çünkü belleğe yapılan her erişim yavaştır.
Sürekli kullanacağın üç adımlı kalıp:
| Adım | Ne olur | Örnek |
|---|---|---|
| 1. LOAD | Veriyi bellekten bir yazmaca kopyala | mov rax, [count] |
| 2. WORK | Yazmaçla bir işlem yap | add rax, 5 |
| 3. STORE | Sonucu (gerekiyorsa) belleğe geri kopyala | mov [result], rax |
Bu kuralı unutursan ne olur?
İkisi de bellekte bulunan iki sayıyı toplamaya çalışırsan, assembler sana bir hata verir. CPU bunu yapamaz. Önce bunlardan birini bir yazmaca yüklemelisin.
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.
Temel Bilgiler bölümündeki tüm dersler
Kendi başına pratik yap: Assembly playground