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 yeri öğrendin:
- Registers: CPU'nun içindeki küçük depolama kutuları
- Memory (RAM): CPU'nun dışındaki numaralandırılmış yuvalardan oluşan dev bir ızgara
Ama neden iki yer var? CPU neden doğrudan memory ile çalışamıyor?
Cevap hızdır. register’lar CPU’nun içinde oldukları için son derece hızlıdır. memory daha yavaştır çünkü dışarıdadır. CPU bir register’a tek bir döngüde erişebilir, ancak memory’ye erişmek çok daha uzun sürer.
Yan yana karşılaştırma:
| Özellik | Register'lar | Bellek (RAM) |
|---|---|---|
| Konum | CPU'nun içinde | CPU'nun dışında |
| Hız | Daha yavaş (çok sayıda döngü) | |
| Depolama yuvalarının 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şirsiniz | Adla (rax, rbx, rcx...) | Adresle (1000, msg, buffer) |
| Geçici mi? | Evet (güç kapatıldığında kaybolur) | Evet (güç kapatıldığında kaybolur) |
Assembly'deki en önemli kural:
CPU, bellekteki verilerle doğrudan çalışamaz. Veriler önce register'lara yüklenmelidir.
Bu isteğe bağlı değildir. CPU bu şekilde tasarlanmıştır. Her toplama, her karşılaştırma, her veri taşıma işlemi bir register üzerinden gerçekleşmelidir.
Sürekli kullanacağın üç adımlı kalıp:
| Adım | Ne olur | Örnek |
|---|---|---|
| 1. LOAD | Verileri memory konumundan bir register içine kopyala | mov rax, [count] |
| 2. WORK | register ile bir işlem yap | add rax, 5 |
| 3. STORE | result değerini gerekirse memory konumuna geri kopyala | mov [result], rax |
Bu kuralı unutursanız ne olur?
Her ikisi de bellekte bulunan iki sayıyı add etmeye çalışırsanız, assembler size bir hata verir. CPU bunu basitçe yapamaz. Önce bunları register'lara 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.
Temeller bölümündeki tüm dersler
Kendi başına pratik yap: Assembly playground