Assembly Dili Tanımı

Assembly Dili Nedir?

Assembly dili, bir bilgisayarın donanımıyla doğrudan iletişim kurması amaçlanan bir tür düşük seviyeli programlama dilidir.İkili ve onaltılık karakterlerden oluşan makine dilinin aksine, montaj dilleri insanlar tarafından okunabilecek şekilde tasarlanmıştır.

Assembly dili gibi düşük seviyeli programlama dilleri, bir bilgisayarın temel donanımı ile modern yazılım programlarının yazıldığı Python veya JavaScript gibi daha yüksek seviyeli programlama dilleri arasında gerekli bir köprüdür.

Önemli Çıkarımlar

  • Assembly dili, üst düzey dilleri makine diline çeviren bir programlama dili türüdür.
  • Yazılım programları ve onların temel donanım platformları arasında gerekli bir köprüdür.
  • Assembly dili, kodu kullanılabilir makine talimatına dönüştürmek için dil sözdizimine, etiketlere, operatörlere ve yönergelere dayanır.
  • Assembly dili, her biri belirli kullanımları ve faydaları olan tek geçişli veya çok geçişli birleştiricilerden geçebilir.
  • Bugün, birleştirme dilleri nadiren doğrudan yazılıyor, ancak performans gereksinimlerinin özellikle yüksek olduğu bazı niş uygulamalarda hala kullanılıyorlar.

Assembly Dilleri Nasıl Çalışır?

Temel olarak, bir bilgisayar tarafından yürütülen en temel komutlar, birler ve sıfırlardan oluşan ikili kodlardır.Bu kodlar, bilgisayarın fiziksel devrelerinde hareket eden elektriğin “açık” ve “kapalı” durumlarına doğrudan çevrilir.Özünde, bu basit kodlar, programlama dilinin en temel çeşidi olan “makine dilinin” temelini oluşturur.

Elbette hiçbir insan, birleri ve sıfırları açıkça programlayarak modern yazılım programları oluşturamaz.Bunun yerine, insan programcılar, komutlarını insanlar için daha sezgisel bir biçimde ifade etmelerine izin verebilecek çeşitli soyutlama katmanlarına güvenmelidir.

Spesifik olarak, modern programcılar, tüm İngilizce kelimeler ve cümleler gibi sezgisel sözdiziminin yanı sıra "ve", "veya" ve "else" gibi mantıksal operatörleri kullanan "yüksek seviyeli dillerde" komutlar yayınlar. günlük kullanıma aşina.

Ancak nihayetinde, bu üst düzey komutların makine diline çevrilmesi gerekir.Programcılar bunu manuel olarak yapmak yerine, amacı bu yüksek seviyeli ve düşük seviyeli diller arasında otomatik olarak çeviri yapmak olan montaj dillerine güvenirler.İlk montaj dilleri 1940'larda geliştirildi ve modern programcılar ve modern doğal dil işlemcileri, montaj dilleriyle çok az zaman harcamasına rağmen, yine de bir bilgisayarın genel işleyişi için gerekli olmaya devam ediyor.

Bilgi işlemin ilk günlerinde, sistem programlama ve uygulama programlama, her ikisi de tamamen Assembly dilinde gerçekleşecekti.Assembly dilleri olmasaydı, bugün kullandığımız birçok modern bilgisayar ve daha üst düzey diller mümkün olmazdı.

Assembly Dilinin Bileşenleri

Sözdizimi

Herhangi bir program dilinde herhangi bir kod yazarken, bir derleyicinin kodu hatasız çalıştırmasına izin vermek için izlenmesi gereken gözlemlenebilir, belirli bir kural sırası vardır.Bu kurallar sözdizimi olarak tanımlanır ve izin verilen maksimum karakter sayısı, kod satırlarının hangi karakterlerle başlaması gerektiği veya "yani noktalı virgülün" belirli simgelerinin ne anlama geldiği gibi kriterleri içerir.

Etiket

Etiket, bir talimatın veya verilerin depolandığı adresi temsil eden bir semboldür.Amacı, bir açıklamada atıfta bulunulduğunda hedef olarak hareket etmektir.Etiketler, bir adresin montaj dillerinde kullanılabileceği her yerde kullanılabilir.Sembolik etiket, iki nokta üst üste gelen bir tanımlayıcıdan oluşurken, sayısal etiketler tek bir dijital ve ardından iki nokta üst üste işaretinden oluşur.

operatörler

Komutlar olarak da adlandırılan operatörler, etiket alanından sonra oluşan mantıksal ifadelerdir.Ayrıca, en az bir boşluk karakterinden önce gelmelidir.Operatörler opcode veya yönerge olabilir.Opcode, doğrudan makine talimatlarına karşılık gelir ve işlem kodu, talimatla ilişkili herhangi bir kayıt adını içerir.Alternatif olarak, yönerge işlem kodları, montajcı tarafından bilinen talimatlardır.

Direktif

Yönergeler, montaj işlemi sırasında hangi eylemlerin gerçekleştirilmesi gerektiğini söyleyen montajcıya verilen talimatlardır.Yönergelerin, değişkenler için bellek bildirme veya ayırma önemi vardır; bu değişkenler, daha dinamik işlevler gerçekleştirmek için işlemlerde daha sonra geri çağrılabilir.Yönergeler ayrıca programları farklı bölümlere ayırmak için de kullanılır.

Makro

Bir montaj dili makrosu, bir dizi veya ifade kalıbı sunan bir şablon ayakkabı biçimidir.Bu derleme dili deyimleri dizisi, birden çok farklı program için ortak olabilir.Makro tanımlarını yorumlamak için bir makro özelliği kullanılırken, kaynak koduna, makro ifadeler kümesi yerine "normal" derleme kodunun gideceği yere bir makro çağrısı eklenir.

anımsatıcı

Anımsatıcı, bir işlemin kısaltmasıdır.Daha büyük, eksiksiz bir kod kümesini temsil eden kısaltılmış bir "işlem kodu" belirtmek için her bir birleştirme programı talimatı için işlem koduna bir anımsatıcı girilir.Örneğin, "iki ile çarp" anımsatıcı, anımsatıcıyı gerçekleştiren tam bir kod kümesine sahiptir.

Yüksek Frekanslı Ticaret

Bugün, montaj dilleri, modern yazılımın temel donanım platformlarıyla nasıl ilişkili olduğunu anlamalarına yardımcı olmak için bilgisayar bilimi öğrencileri tarafından çalışmanın konusu olmaya devam ediyor.Bazı durumlarda programcılar, performans taleplerinin özellikle yüksek olduğu veya söz konusu donanımın mevcut herhangi bir yüksek seviyeli dille uyumlu olmadığı durumlarda olduğu gibi, montaj dillerinde yazmaya devam etmelidir.

Finansmanla ilgili böyle bir örnek, bazı finans firmaları tarafından kullanılan yüksek frekanslı ticaret (HFT) platformlarıdır.Bu pazarda, HFT ticaret stratejilerinin karlı olduğunu kanıtlamak için işlemlerin hızı ve doğruluğu büyük önem taşımaktadır.Bu nedenle, bazı HFT firmaları rakiplerine karşı üstünlük sağlamak için ticaret yazılımlarını doğrudan montaj dillerinde yazarak, üst düzey bir dilden gelen komutların makine diline çevrilmesini beklemeye gerek kalmamıştır.

Birçoğu, montaj dillerinin en dik öğrenme eğrilerine sahip olduğuna ve öğrenilmesi en zor bilgisayar dilleri olduğuna inanıyor.

Avantajlar ve dezavantajlar

Assembly dili genellikle yüksek seviyeli dillerden daha hızlı yürütülebilir.Derleme dili kodunun silme bileşenlerini eklemek nispeten kolaydır ve diğer dil türleriyle karşılaştırıldığında, derleme dili genellikle bir görevi tamamlamak için daha az talimat gerektirir.

Montaj dilleri, donanımınızı doğrudan manipüle etmenize izin verdiği için, bilgisayarları üzerinde daha fazla kontrol isteyen programcılar tarafından da sıklıkla kullanılır.Hızı ve önemi nedeniyle, kod genellikle daha küçük kalabileceğinden, bazı programlar özellikle montaj dili kullanılarak yazılır.

Assembly dillerinin birçok dezavantajı vardır.Assembly dili kullanılarak yazılan uzun programlar genellikle daha fazla bilgi işlem gücü gerektirir ve küçük bilgisayarlarda çalıştırılamaz.Bazıları, montaj dilinin sözdizimini hatırlamayı daha zor bulabilir ve daha karmaşık olduğu için derleme dilini kullanarak kodlamak biraz daha uzun sürebilir.Ayrıca, montaj dili genellikle farklı bilgisayarların farklı markaları arasında taşınabilir değildir; Şirket değiştirirken çalışanlara sağlanan faydaların kaybolmasına benzer şekilde, diller farklı bilgisayarlara sorunsuz bir şekilde çevrilemez.

Artıları
  • Yürütme, diğer dillere kıyasla daha basit olabilir

  • Yürütme genellikle diğer dillere kıyasla daha hızlıdır

  • Donanım üzerinde doğrudan kontrole izin verir

  • Kod diğer dillere kıyasla daha küçük kalabilir

Eksileri
  • Programlama, üst düzey dillere kıyasla almak için daha zor olabilir

  • Montaj dillerinin sözdizimi zordur

  • Makineler arasında taşınabilir değil

Montajcı Türleri

Montaj dili, bir montajcı kullanılarak makine diline çevrilmelidir.İki ana tip montajcı vardır.

Tek geçişli bir montajcı, bir programı bir kez tarar ve eşdeğer bir ikili program yapar.Bu tür bir montajcı, kodu bir anımsatıcı kod tablosunda arayarak derleme dili kodunu doğrular.Tek geçişli bir derleyici genellikle çok geçişli bir derleyiciden daha hızlıdır ve genellikle herhangi bir ara kod oluşturmaya gerek yoktur.

Çok geçişli birleştirici, birleştiricinin birden fazla geçiş kullandığı anlamına gelir.Çok geçişli birleştiriciler, ilk geçişte her sembol ve değerlerinin her biri ile bir tablo oluşturur, ardından yeni kod oluşturmak için sonraki geçişlerde tabloyu kullanır.Her ayrı geçiş genellikle farklı bir özel görevi yerine getirir.Genellikle daha yavaş olmasına rağmen, modüler yapılara sahip çok geçişli birleştiriciler genellikle farklı makineler için yeniden kullanılabilir.

Assembly Dil Kodu Örneği

Aşağıda, Netwide Assembler (NASM) derleme dili koduna bir örnek verilmiştir.

Assembly Dil Kodu Örneği.

Loyola Marymount Üniversitesi

Bu örnekte, kodun sonuna doğru SYSCALL komutu, işletim sistemi hizmetlerinin depolandığı bellek bölümünü tetikler.Ardından, yazılacak kodu çağırmak için RAX kodu, ardından çıkmak için RDI kullanılır.SYSCALL işlevi, işletim sistemini çağırmak ve ayrıca sisteme kodun bittiğini ve çıkış zamanının geldiğini bildirmek için iki kez kullanılır.

Bir Assembly Dili Örneği Nedir?

En yaygın kullanılan derleme dilleri ARM, MIPS ve x86'dır.

C++ bir Assembly Dili midir?

C++, derleme kodundan oluşmaz.C++ bilgi işlem dili, bir derleyicinin yürütülebilir bir makine koduna çevirdiği C++ kodundan oluşur.

Python bir Assembly Dili midir?

Python, montaj dillerinden daha gelişmiştir.Assembly dilleri düşük seviyeli bir dil olarak kabul edilirken, C, Java veya Python gibi yüksek seviyeli diller sayılar, semboller ve kısaltmalar yerine 0'lar ve 1'ler kullanır.

Assembly Dilleri Bugün Nasıl Kullanılıyor?

Daha gelişmiş dillere kıyasla daha düşük seviyeli diller olarak kabul edilse de, montaj dilleri hala kullanılmaktadır.Assembly dili, donanımı doğrudan değiştirmek, özel işlemci talimatlarına erişmek veya kritik performans sorunlarını değerlendirmek için kullanılır.Bu diller ayrıca yüksek frekanslı ticaret gibi zamana duyarlı faaliyetler için yüksek seviyeli dillere göre hız avantajlarından yararlanmak için kullanılır.

Alt çizgi

Montaj dili, kodlama dilini kullanarak girilen komutlar ile bir makinenin kod talimatlarını nasıl yorumladığı arasında güçlü bir ilişkiye dayanan düşük seviyeli bir koddur.Kod, girdiyi makine için tanınabilir talimatlara dönüştüren bir birleştirici kullanılarak yürütülebilir eylemlere dönüştürülür.Bilgisayarın ilk günlerinde yaygın olmasına rağmen, birçok büyük sistem daha yüksek seviyeli diller kullanır.