Menu
Coddy logo textTech

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:

ÖzellikRegister'larBellek (RAM)
KonumCPU'nun içindeCPU'nun dışında
HızDaha 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 boyutu8 bayt (64 bit)1 bayt
Bunlara nasıl erişirsinizAdla (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ımNe olurÖrnek
1. LOADVerileri memory konumundan bir register içine kopyalamov rax, [count]
2. WORKregister ile bir işlem yapadd rax, 5
3. STOREresult değerini gerekirse memory konumuna geri kopyalamov [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.

quiz iconKendini test et

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