🚀 BAŞTAN SONA x86 ASSEMBLY BÖLÜM-1: İşlemci Mimarisi, Yazmaçlar (Registers) ve İlk Kod! 💻

Konu Özeti

x86 Assembly programlamaya giriş yapılıyor; işlemci mimarisi, yazmaçlar (EAX, EBX, ECX, EDX, ESP, EBP, EIP) ve görevleri açıklanıyor. Linux ortamında NASM sözdizimi ile ekrana metin yazdıran ve güvenli çıkış yapan ilk örnek kod adım adım inceleniyor.

🚀 BAŞTAN SONA x86 ASSEMBLY BÖLÜM-1: İşlemci Mimarisi, Yazmaçlar (Registers) ve İlk Kod! 💻

Selamlar dostlar! 👋
Yazılım dünyasının en alt seviyesine, doğrudan işlemcinin (CPU) diline iniyoruz! **x86 Assembly** serimize hoş geldiniz.

Bu seride soyutlamaları kaldırıp donanım seviyesinde kod yazmayı, RAM adreslerini, CPU yazmaçlarını (Registers), kesilmeleri (Interrupts) ve sistem çağrılarını (Syscalls) öğreneceğiz.

---

📌 1. Assembly Dili ve x86 Mimarisi Nedir? 🧠

Assembly; makine kodunun (0101) insan tarafından okunabilir sembolik komutlara (Mnemonic: MOV, ADD, SUB vb.) birebir eşlenmiş halidir.

### Neden x86 Assembly?
✨ **En Alt Seviye Kontrol:** İşlemci çekirdeğini ve RAM bellek hücrelerini doğrudan yönetmenizi sağlar.
🛡️ **Tersine Mühendislik (Reverse Engineering) & Siber Güvenlik:** Zararlı yazılım analizi (Malware Analysis), Kernel exploit geliştirme ve zafiyet araştırmalarında zorunludur.
⚡ **Maksimum Performans:** İşletim sistemi çekirdekleri (Kernel), MBR Bootloader ve sürücü (Driver) yazımında kullanılır.

---

🏗️ 2. x86 Yazmaçları (Registers) ⚙️

Yazmaçlar, işlemcinin (CPU) içerisinde bulunan, RAM'den katbekat hızlı çalışan ultra küçük dahili bellek alanlarıdır. 32-bit x86 mimarisinde en sık kullanılan Genel Amaçlı Yazmaçlar (General Purpose Registers):

| Yazmaç (32-bit) | Alt Yapı (16-bit / 8-bit) | Açıklama / Birincil Görevi |
| :--- | :--- | :--- |
| **EAX** | AX (AH / AL) | **Accumulator:** Aritmetik işlemler ve fonksiyon dönüş değerleri. |
| **EBX** | BX (BH / BL) | **Base Register:** Bellek adreslemelerinde temel adres tutucu. |
| **ECX** | CX (CH / CL) | **Count Register:** Döngülerde (Loops) sayaç görevi görür. |
| **EDX** | DX (DH / DL) | **Data Register:** Çarpma/bölme ve G/Ç (I/O) işlemleri. |
| **ESP** | SP | **Stack Pointer:** Yığın bellek alanının en üstünü gösterir. |
| **EBP** | BP | **Base Pointer:** Fonksiyon çerçevelerinin (Stack Frame) taban adresi. |
| **EIP** | IP | **Instruction Pointer:** Bir sonraki çalıştırılacak komutun adresi. |

---

✍️ 3. İlk x86 Assembly Kodu (NASM / Linux Syntax) 💻

Linux ortamında NASM (Netwide Assembler) sözdizimi ile yazılmış ilk kodumuz:

section .data
msg db 'Selam x86 Assembly Dünyasi!', 0xa ; Ekrana basılacak metin ve alt satır karakteri (\n)
len equ $ - msg ; Metnin bayt cinsinden uzunluğu

section .text
global _start ; Bağlayıcıya (Linker) giriş noktasını bildiriyoruz

_start:
; sys_write (Ekrana Yazdırma Sistem Çağrısı)
mov eax, 4 ; Syscall numarası 4 (sys_write)
mov ebx, 1 ; Dosya tanımlayıcı 1 (stdout - standart çıktı)
mov ecx, msg ; Yazdırılacak metnin adresi
mov edx, len ; Yazdırılacak metnin uzunluğu
int 0x80 ; Linux Çekirdek Kesilmesi (Kernel Interrupt)

; sys_exit (Programdan Güvenli Çıkış Sistem Çağrısı)
mov eax, 1 ; Syscall numarası 1 (sys_exit)
mov ebx, 0 ; Çıkış kodu (Exit Status Code 0 - Hata yok)
int 0x80 ; Linux Çekirdek Kesilmesi

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
136,665Threads
3,307,464Messages
328,515Members
LucidselfLatest member
Top Bottom