Assembly
Temel kavramlar > Makine dili

Makine dili ifadelerden (statements) veya komutlardan (instructions) oluşur. İşlemci mimarisine bağlı olarak, verilen bir komut:
aritmetik, adresleme veya kontrol fonksiyonları için belli kayıt yerlerini (registers)
belli hafıza yerlerini veya ofsetleri
İşlem faktörlerini (operands) yorumlamak için kullanılan belli adresleme şekillerini
belirleyebilir.
Daha karmaşık işlemler, sırasıyla yerine getirilen (bir Von Neumann makinesinde) veya başka bir şekilde kontrol akış komutlarıyla yönlendirilen bu basit komutların birleştirilmesiyle oluşturulur.
Pek çok komut kümesinden yer alan bazı işlemler:
• Taşıma
. bir sabit değere bir kayıt yerini ayarlayınız (CPU'nun kendisinde geçici bir “scratchpad” (bir bilgisayar sisteminde geçici sonuçları tutmak için kullanılan bir bellek) yeri)
. verileri bir bellek yerinden bir kayıt yerine veya kayıt yerinden bir bellek yerine taşıyınız. Bu işlem daha sonra bir hesaplama yapmak veya hesaplama sonucunun saklamak için verilerin temin edilmesi amacıyla yapılır.
. donanım cihazlarından verileri okuyunuz ve yazınız.
• Hesaplama
. sonuçları bir kayıt yerine yerleştirerek iki kayıt yerinin değerlerini toplayınız, çıkarınız, çarpınız veya bölünüz.
. bir çift kayıt yerindeki (pair of registers) ilgili bit'lerin birleşimini/ayrımını (ve/veya) alarak veya bir kayıt yerinde (register) her bir bit'i eksilterek bit'e yönelik işlemleri yapınız.
. Kayıt yerlerindeki iki değeri karşılaştırınız (örneğin, birinin diğerinden az olup olmadığını veya ikisinin de birbirlerine eşit olup olmadıklarını anlamak için)
• Program akışının etkilenmesi
. programda başka bir yere atlayınız ve orada komutları yerine getiriniz.
. belli bir koşulun oluşması halinde başka bir yere atlayınız.
. başka bir yere atlayınız, ancak (bir çağrıya) dönüş noktası olarak bir sonraki komutun yerini saklayınız.
Bazı bilgisayarlar içerdikleri komut grubunda karmaşık (complex) komutlara sahiptirler. Tek bir “complex” komut diğer bilgisayarlarda pek çok komutları alabileceği bir şeyi yapar. Bu tür komutlar çoklu adımlar atan, çoklu fonksiyonel birimleri kontrol eden veya başka bir şekilde belli bir işlemci tarafından uygulanan basit talimatların tümünden daha hacimli görünen komutlar olarak sınıflandırılırlar. “Complex” (Karmaşık) komutların bazı örnekleri aşağıda verilmiştir:
Bir defada “stack” (bir uçtan erişilebilir birbirini takip eden bellek yerlerinin bir bloğu) üzerinde pek çok kayıt yerlerini (registers) saklayan
Geniş bellek bloklarını taşıyan
Karmaşık (complex) ve/veya kayan nokta (floating point) aritmetiği (sinüs, kosinüs, karekök, vs.)
Bir atomik test et ve kur (test-and-set) komutunu yerine getiren
ALU'yu bir “register” (kayıt yeri) yerine bellekten gelen bir “operand” (işlem faktörü) ile birleştiren komutlar.
Son zamanlarda özellikle çok popüler hale gelen bir kompleks (karmaşık) komut türü SIMD işlemi veya aynı zamanda çoklu veri parçaları üzerinde aynı aritmetik işlemi yapan bir işlem olan vektör komutudur. SIMD komutları çoğunlukla ses, görüntü ve video işleminde bulunan algoritmaların kolayca paralelizasyonunu sağlar. MNX, 3DNow ve AltiVec gibi ticari markalarda muhtelif SIMD uygulamaları piyasaya sunulmuştur.
Komut takımlarının (grubu) tasarımı karmaşık bir husustur. Basit bir komut takımı küçültülmüş işlemci büyüklüğü ve düşük enerji tüketimiyle birlikte yüksek hızlar için potansiyel oluşturabilir; daha karmaşık olan genel işlemleri optimize edebilir, bellek/kaşe verimliliğini artırabilir veya programlamayı basitleştirebilir. Bu farklılık genellikle CISC’ye (Complex Instruction set Computer) (Kompleks Komut Kümesiyle çalışan Bilgisayar) karşı RISC (Reduced Instruction Set Computer) (Küçültülmüş Komut Kümesiyle çalışan Bilgisayar) açısından tartışılır, ancak bu bir aşırı basitleştirmedir. (Örneğin, RISC kavramı bir mikro programlanan mimariye açık – assembly dil programlanmasında direkt yoldan ziyade derleyici teknoloji tarafından işletilmeyi amaçlayan- olarak düşünülebilir. Programlama kolaylığı ve pek çok optimizasyon meseleleri tartışılacak bir konuyu teşkil eder). İlgili yorumlar için komut grubuna (instruction set) bakınız.