Menu
Coddy logo textTech

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 doğrudan bellekle çalışamıyor?

Cevap hızdır. Register'lar CPU'nun içinde oldukları için son derece hızlıdır. Bellek dışarıda olduğu için daha yavaştır. CPU bir register'a tek bir döngüde erişebilir, ancak belleğe erişmek çok daha uzun sürer.

Yan yana karşılaştırma:

ÖzellikYazmaçlarBellek (RAM)
KonumCPU'nun içindeCPU'nun dışında
HızSon 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 boyutu8 bayt (64 bit)1 bayt
Bunlara nasıl erişilirAdla (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 yazmaç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 yazmaçtan geçmelidir.

Sürekli kullanacağınız üç adımlı kalıp:

AdımNe olurÖrnek
1. LOADVerileri bellekten bir yazmaç içine kopyalamov rax, [count]
2. WORKYazmaçla bir işlem yapadd rax, 5
3. STORESonucu (gerekirse) belleğe geri kopyalamov [result], rax

Bu kuralı unutursanız ne olur?

Her ikisi de bellekte bulunan iki sayıyı toplamaya çalışırsanız, assembler size bir hata verir. CPU bunu yapamaz. Önce onları yazmaçlara yüklemelisiniz.

Kendin dene

Bu ders bir kod alıştırması içermiyor.

quiz iconKendini test et

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