Menu
CoddyTech

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:

Ö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)
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ımNe olurÖrnek
1. LOADVeriyi bellekten bir yazmaca kopyalamov rax, [count]
2. WORKYazmaçla bir işlem yapadd rax, 5
3. STORESonucu (gerekiyorsa) belleğe geri kopyalamov [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.

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