İki Dosya Deseni
Coddy'nin Assembly Journey'sinin Temeller bölümünün bir parçası — ders 5 / 45.
Bu kurs boyunca, her programı iki ayrı dosya kullanarak yazacaksınız:
| Dosya | Amaç |
|---|---|
data.asm | Tüm verileri (dizeler, sayılar, değişkenler) saklar |
main.asm | Tüm kodları (talimatlar, mantık, akış) saklar |
Bu, assembler tarafından zorunlu tutulmaz. Her şeyi tek bir dosyaya koyabilirsiniz. Ancak kodu veriden ayırmak, programlarınızı daha temiz, okunması daha kolay ve hata ayıklaması daha kolay hale getirir.
Neden iki dosya?
- Organizasyon — Veri ve kodun farklı amaçları vardır. Onları ayrı tutmak net düşünmenize yardımcı olur.
- Yeniden Kullanılabilirlik — Aynı
data.asmdosyasını farklımain.asmdosyalarıyla kullanabilirsiniz.
- Okunabilirlik — Kodunuzu bulmak için asla uzun dizeler arasında kaydırma yapmak zorunda kalmazsınız.
- Sektör uygulaması — Gerçek projeler kod ve veriyi birbirinden ayırır (genellikle daha karmaşık yollarla olsa da).
Nasıl çalışır:
main.asm dosyası, %include yönergesini kullanarak data.asm dosyasını dahil eder. Bu, derleyiciye (assembler) şunu söyler: "derlemeden hemen önce data.asm dosyasının tüm içeriğini tam buraya yerleştir."
Yan yana iki dosya:
| data.asm | main.asm |
|---|---|
section .data | %include "data.asm" |
| (değişkenler buraya gelir) | section .text |
global _start | |
_start: | |
| (komutlar buraya gelir) |
Her bir bölümün ne yaptığı:
| Bölüm | Amaç | Hangi dosya? |
|---|---|---|
section .data | Program çalıştığında bellekte bulunan verileri tutar | data.asm |
section .text | Yürütülebilir talimatları (kod) tutar | main.asm |
global _start | Giriş noktasını bağlayıcı (linker) için görünür kılar | main.asm |
_start: | Program yürütülmesinin başladığı etiket | main.asm |
Şu anda
section .data,section .text,global _startveya_start:kısımlarını ezberlemenize gerek yok. Bu komutların her birini ilerleyen derslerde ayrıntılı olarak ele alacağız. Şimdilik sadece büyük resme bakın ve iki dosyanın yapısını anlayın.
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.