Assembly Dili Nedir?

Bazen assembly veya ASM olarak adlandırılan, assembly dili düşük seviye bir programlama dilidir.

Assembly dilinde yazılmış programlar bir assembler tarafından derlenir. Her montajcının belirli bir bilgisayar mimarisi için tasarlanmış kendi montaj dili vardır.

Makine dili, insanların okuması kolay olmayan bir sayı dizisidir. ASM'yi kullanarak, programcılar neredeyse tamamen makine diline karşılık gelen okunabilir programlar yazabilirler.

Dezavantajı, bilgisayarın yaptığı her şeyin açıkça ve ayrıntılı olarak açıklanması gerektiğidir. Bunun avantajı, programcının bilgisayarın yaptığı şey üzerinde maksimum kontrole sahip olmasıdır.

ASM neden "düşük seviyeli" bir dildir?

Derleme, düşük seviyeli bir programlama dili olarak adlandırılır, çünkü bilgisayarın yapmasını istediği şey ile bilgisayarın ne yaptığı arasında birebir ilişki vardır (neredeyse). Genel olarak, bir montaj programının bir satırı bilgisayar için maksimum bir talimat içerir.

ASM'nin "üst düzey" bir dilden farkı nedir?

Üst düzey diller, programcının ne yapmak istediklerini açıklamaya ve nasıl yapılması gerektiğine daha az odaklanmasına olanak tanıyan düşük düzeyli işlem özetleri sunar. Bu şekilde programlama daha uygundur ve düşük seviye kontrol fedakarlığında programların okunmasını kolaylaştırır.

Yüksek seviyeli dillerde yazılmış programlar, montajda yazılan programların ham hızına ve verimliliğine asla uymayacak. Üst düzey dil örnekleri Python, Java, JavaScript, Clojure ve Lisp'dir.

"Orta seviye" dili nedir?

Orta seviye veya daha düşük seviyeli diller, programcının ömrünü kolaylaştırmak için bazı düşük seviyeli soyutlamalar sağlarken, düşük seviyeli işlemlere erişim sağlar. Genellikle işletim sistemleri yazmak için kullanılırlar, bu yüzden bazen sistem programlama dilleri olarak adlandırılırlar.

Orta seviye dillerinde yazılmış programlar, derleme dilinde yazılmış programlar kadar iyi veya neredeyse aynı derecede performans gösterebilir. Orta seviye programlama dillerinin örnekleri arasında C, C ++, Ada, Nim ve Rust bulunur.

ASM taşınabilir mi?

Hayır. Assembly dilleri belirli bir bilgisayar mimarisine bağlı olduğundan, taşınabilir değillerdir. Bir montaj dilinde yazılmış bir programın, başka tür bir makinede çalışması için tamamen yeniden yazılması gerekir.

Taşınabilirlik, üst düzey dillerin temel avantajlarından biridir. C programlama dili genellikle "taşınabilir derleme" olarak adlandırılır, çünkü hemen hemen her modern sistem mimarisi için C derleyicileri bulunur. C ile yazılmış bir program başka bir bilgisayarda derlenmeden önce bazı değişiklikler gerektirebilir, ancak ana dil taşınabilir.

Genel olarak konuşursak, dilin seviyesi daha yüksektir, başka bir mimaride çalışması için daha az değişiklik yapılması gerekir. En düşük seviyeli diller - makine dili ve montaj dili - taşınabilir değildir.

Örnek: Merhaba, Dünya! 32 bit derlemede, Windows için

İşte 32 bit Intel işlemci için yazılmış "Merhaba, Dünya". Ayrıca 64 bit işlemcide de çalışacaktır. Windows 10'da derleyeceğiz ve çalıştıracağız.

 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _t_s _ _ _ _ _ _ _t_sard_dosyası: _devlet çağrısı _printf ekle esp, 4 ret mesajı: db 'Merhaba, Dünya!', 10, 0 

Başlamak için Not Defteri'ni açın. Yukarıdaki kodu kopyalayıp yeni bir metin dosyasına yapıştırın ve dosyayı hello.asm olarak kaydedin .

Montajı derlemek için, Netwide Assembler olan NASM'ı kullanacağız. //Www.nasm.us/ adresinden indirilebilir.

 nasm -f win32 Instagram Hesabındaki Resim ve Videoları hello.asm 

Bu komutu çalıştırdığınızda, NASM bir nesne dosyası oluşturur. Bir nesne dosyası, makine kodunu içerir, ancak oldukça çalıştırılabilir bir dosya değildir. Nesne dosyamızın adı hello.obj .

Yürütülebilir dosyayı oluşturmak için, gcc derleyicisini sağlayacak MinGW'nin (Windows için Minimal GNU) 32 bit sürümünü kullanacağız. //Www.mingw.org/ adresinden indirilebilir.

 gcc -o hello.exe Instagram Hesabındaki Resim ve Videoları hello.obj 
 Merhaba 
 Selam Dünya! 

Örnek: Merhaba, Dünya! 64 bit derlemede, Linux için

İşte 64-bit bir Intel işlemci için yazılmış "Merhaba, Dünya". 64 bit Linux'ta derleyeceğiz ve çalıştıracağız.

 dış baskı; C printf işlevi, bölüm .data olarak adlandırılır; Veri bölümü, ilklendirilen değişkenler msg: db "Merhaba, dünya!", 0; C string 0 fmt ile sonlanır: db "% s", 10, 0; Printf formatı, "\ n", '0' bölümü .text; Genel ana kod bölümüne başlayın; standart gcc giriş noktası ana:; giriş noktası için program etiketi push rbp; istif çerçevesi kurmak, mov rdi, fmt mov rsi, msg mov rax, 0; ayrıca: xor rax, rax call printf; C printf işlevini çağırın pop rbp; istif taşını yeniden hareket ettir, 0; normal, hata yok, geri dönüş değeri ret; dönüş 

Bu programı kopyalayıp hello.asm adlı yeni bir dosyaya yapıştırın .

Ardından, montajı paket yöneticinizle yükleyebileceğiniz NASM ile derleyin. Örneğin, Ubuntu veya Debian'da, apt ile NASM'i kurabilirsiniz:

 sudo apt güncelleme & & sudo apt yükleme nasm 

Nesne dosyanızı oluşturmak için bu komutu çalıştırın:

 nasm -f elf64 

Nesne dosyasına hello.o adı verilir.

Ardından, bu nesne dosyasını bilgisayarınızdaki gerekli kitaplıklara bağlamak için gcc kullanın ve merhaba adındaki yürütülebilir bir dosyaya derleyin:

 gcc hello.o -o merhaba 

Son olarak, çalıştırılabilir dosyayı çalıştırın:

 ./Merhaba 
 Selam Dünya! 

Başvuru için, bu C ile yazılmış aynı programdır:

 #include int main () {char msg [] = "Merhaba dünya \ n"; Printf ( "% s \ n", MSG); 0 döndür; } 

  • Diğer düşük düzey montaj kodu örnekleri ve her bir rutinin ne yaptığı hakkında ek bilgi için hata ayıklama rutinlerine bakın.
  • Assembly dili ek örnekleri için, Happy Codings web sitesine bakın.

2GL, Assembler, Düşük seviyeli dil, Makine dili, Programlama terimleri