# Assembly Dili

Adres: https://softwaredictionary.org/tr/terimler/assembly-language
Kategori: Programlama Dilleri
Son güncelleme: 2026-09-30
İngilizcesi: Assembly Language
Okunuşu: ısembli lengvic

Kısaca: Assembly dili, komutları bir işlemcinin makine koduna neredeyse bire bir karşılık gelen ve mov, add gibi kısa anımsatıcılarla yazılan düşük seviyeli bir dildir.

## Assembly dili nedir?

Assembly dili, bir bilgisayarı programlamanın insan tarafından okunabilir en düşük seviyeli yoludur. Her satır genellikle tek bir makine komutuna karşılık gelir; `mov` (bir değeri kopyala), `add` veya `jmp` (başka bir komuta atla) gibi kısa bir anımsatıcı ile onu izleyen yazmaçlar ya da bellek adresleri gibi işlenenlerden oluşur. Assembler adı verilen bir program bu metni, işlemcinin gerçekte çalıştırdığı ikili makine koduna çevirir.

Tek bir assembly dili yoktur: x86-64, ARM64 veya RISC-V gibi her işlemci mimarisinin kendi komut kümesi ve dolayısıyla kendi assembly dili vardır; hatta tek bir mimarinin x86 için Intel ve AT&T stilleri gibi birkaç sözdizimi bile olabilir. Assembly, doğrudan yazmaçlarla (registers), yani işlemcinin içindeki minik ve son derece hızlı depolama yuvalarıyla ve bellek adresleriyle çalışır; yüksek seviyeli anlamda değişkenleri, tipleri ya da döngüleri yoktur. Döngüler ve koşullar karşılaştırmalar ve atlamalarla kurulur.

Bugün çoğu geliştirici assembly'yi hiç elle yazmaz, çünkü derleyiciler mükemmel makine kodu üretir. Yine de önyükleyicilerde (bootloader) ve işletim sistemlerinin en alt katmanlarında, sıkı sınırları olan gömülü mikrodenetleyicilerde, SIMD (tek bir komutun birkaç değer üzerinde çalışması) gibi özel komutları kullanan performans açısından kritik rutinlerde ve tersine mühendislik gibi güvenlik çalışmalarında kullanılır. Bir derleyicinin assembly çıktısını okumak da kodun donanımda gerçekte ne yaptığını anlamanın yaygın bir yoludur.

Assembly dili sıkça makine koduyla karıştırılır. Makine kodu, CPU'nun yürüttüğü ham ikili veridir; assembly ise aynı komutların insanların okuyup yazabildiği metin temsilidir. Ayrıca WebAssembly'den de farklıdır; adına rağmen WebAssembly, herhangi bir fiziksel işlemcinin assembly dili değil, tarayıcılardaki ve diğer çalışma ortamlarındaki sanal makineler için taşınabilir bir bayt kod biçimidir.

## Önemli noktalar

- Her assembly komutu genellikle tek bir makine komutuna karşılık gelir.
- x86-64, ARM64 veya RISC-V gibi her CPU mimarisinin kendi assembly dili vardır.
- Assembler, assembly metnini ikili makine koduna dönüştürür.
- Önyükleyicilerde, gömülü sistemlerde, performans darboğazlarında ve tersine mühendislikte kullanılır.
- WebAssembly geleneksel bir assembly dili değil, taşınabilir bir bayt kod biçimidir.

## Örnek: x86-64 Linux'ta Hello (NASM sözdizimi)

```asm
; Print "Hello" using Linux system calls
section .data
    msg db "Hello", 10        ; the text plus a newline (byte 10)
section .text
    global _start
_start:
    mov rax, 1                ; system call 1 = write
    mov rdi, 1                ; file descriptor 1 = standard output
    mov rsi, msg              ; address of the text
    mov rdx, 6                ; number of bytes to write
    syscall
    mov rax, 60               ; system call 60 = exit
    xor rdi, rdi              ; exit code 0
    syscall
```

## Sık sorulan sorular

**Assembly dili hâlâ kullanılıyor mu?**

Evet, ancak çoğunlukla küçük ve özelleşmiş kod parçalarında. Önyükleyiciler, işletim sistemi çekirdekleri, gömülü yazılımlar, kriptografi ve medya kütüphaneleri, kesin kontrolün ya da azami hızın önemli olduğu yerlerde hâlâ elle yazılmış assembly içerir.

**Assembly dili ile makine kodu arasındaki fark nedir?**

Makine kodu, bir işlemcinin yürüttüğü ikili komutlardır. Assembly dili ise bu komutların okunabilir metin sürümüdür ve bir assembler onu makine koduna çevirir.

**Assembly, C'den hızlı mı?**

Elle yazılmış assembly küçük ve dikkatle ayarlanmış rutinlerde daha hızlı olabilir, ancak modern optimize edici derleyiciler genellikle çoğu insanın elle yazdığı kadar iyi, hatta daha iyi kod üretir. Assembly ayrıca tek bir CPU mimarisine bağlıdır; C ise birçoğu için yeniden derlenebilir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
