Menu
Coddy logo textTech

Komutlar Nasıl Çalışır

Coddy'nin Assembly Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 4 / 45.

CPU'nun talimatları birer birer yürüttüğünü biliyorsun. Peki CPU, sırada hangi talimatı çalıştıracağını nasıl biliyor? Talimatlar nerede depolanıyor? Ve bir talimat aslında neye benziyor?

Talimatlar sayılardır.

Bu, bilgisayarlar hakkında temel bir gerçektir. Her şey bir sayıdır. Üzerinde çalıştığın veriler (42 sayısı gibi) bir sayıdır. Verilerin bulunduğu adres (1000 gibi) bir sayıdır. Ve talimatların kendisi de (mov, add, cmp gibi) sayıdır.

mov rax, 5 gibi assembly kodu yazdığınızda, assembler bu insanların okuyabileceği metni CPU'nun anlayabileceği bir sayıya dönüştürür. Bu sayıya komut kodu denir.

Talimatlar nerede saklanır?

Talimatlar da tıpkı veriler gibi bellekte saklanır. Talimatlar için özel bir yer yoktur. Bellek her ikisini de barındırır:

  • Veriler (sayılar, karakterler, diziler)
  • Talimatlar (programın kendisi)

CPU farkı bilmez. Program Counter’ın işaret ettiği bellek adresinde ne varsa onu okur. PC’yi Ders 0.1’de kısaca öğrendin. Şimdi tam olarak nasıl çalıştığını anlama zamanı.

Program Sayacı (Komut İşaretçisi olarak da adlandırılır), CPU'nun içindeki özel bir yazmaçtır. Tek görevi, yürütülecek bir sonraki komutun bellek adresini tutmaktır.

Getirme-Yürütme Döngüsü:

CPU bu üç adımı sonsuza dek tekrarlar:

AdımNe olur
1. GETİRPC'deki adreste bulunan yönergeyi oku
2. YÜRÜTBu yönergeyi gerçekleştir
3. ADVANCEPC'yi bir sonraki yönergeye taşı

Basit örnek:

PC = 1000 ise CPU:

  • 1000 adresindeki talimatı getirir
  • Onu yürütür
  • PC'yi bir sonraki adrese taşır (1000 + talimat boyutu)

Ardından yeni PC değeriyle tekrarlanır.

Bir talimatın görünümü:

Her talimat iki bölümden oluşur:

BölümNe yaparÖrnek
OpcodeNe YAPILACAĞImov, add, cmp
Operandsİşlemin NE ÜZERİNDE yapılacağırax, 5, [result]

Bazı talimatların bir işleneni vardır (inc rax gibi, 1 eklemek için). Bazılarının iki işleneni vardır (mov rax, 5 gibi). Bazılarının ise üç işleneni vardır (bazı mimarilerdeki add rax, rbx, rcx gibi).

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