Assembly ile C arasındaki farklar ?

Başlatan Rulz3r, 09 Ağustos 2010, 17:00:29

Rulz3r

Selamlar.

Elektronik projelere bakıyorum. Kaynak kodlarını incelediğim zaman bazen Assembly bazen C ile yazılmış oluyor.

Aradaki fark nedir acaba ? Yani Assembly ile yazılan daha az memory yer vs. gibi bir şey mi söz konusu ? Yoksa onlar eskiden kalma şeyler mi , elektronik için assembly 'e gerek olmadan direk C kullanabilir miyiz ?

Şimdiden teşekkürler.

fahri-

Küçük bir programı asembly ve C de ayrı ayrı yazarak arasındaki farkı pratik olarak görebilirsiniz :)

Rulz3r

iki dil hakkında da bir fikrim yok. Elektronik programlamaya yeni başlayacağım. Sadece kafamda soru işaretleri var.

Ne gibi farkları olabilir ki ?

Yani düşünüyorum.. ımm.. Assembly ile yazılan sistem daha hızlı , daha az yer kaplar sanırım. Ama C ile arasında okadar fark olmaz gibi geliyor.

Yani insanlar bi projeyi daha yüksek seviyeli C ile yazmak yerine neden Assembly kullanıyorlarki?

karbal656

Zevk meselesi  :) kimisi uğraşmayı sever.
kimi de sonuca en kısa yoldan ulaşmak ister.

kemalkemal

ayrıntılı bilgim olmasa da ;
tezim için assembly ile bir program yazdım
sayfanın bir orasına bir burasına scroll yapmaktan bezdim. Yani biraz ayrıntılı ve zahmetli bir iş assembly. Ama zamanlama mevzuları senin için önemliyse şu kadar mikrosaniyede şu işi yaptıracam sonra şu kadar mikro saniye bekleyip öbür işi yaptıracam diyosan assembly tüm zahmetine rağmen elzemdir.

F493

#5
Selam,

Eger bir işlemciye Assembly ile proğram yazarsanız avantajları var tabi ki.  Ancak bu assembly dili ile yazan kişinin işi nekadar iyi bildiği ile de ilgili. Assembly ile yazılan kodlar bellek tasarrufu sağlar diyebiliriz.

C dili ile yazılan kodlar ise daha fazla yer kaplar,  aslında bu doğrudan C dili ile ilgili bir unsur değil, daha çok kodun derlendiği compiler'in kalitesi ve tabiki C dilininde pointer aritmatiğinin iyi bilinmesi arka plandaki işlemcinin tasarımına ve komut setine uygun kod yazılmaya çalışmalıdır.

Assembly ile yazılan kodlar çok vakit alır ve değişiklik yapılması zordur. Çünkü yukardan aşagı yazılan bir dildir.
C fonksiyonel bir dildir. Alt programlardan oluşur ve daha esnek bir yapısı vardır. Eger geliştirilecek proje buyuk bir proje ise projeyi sadece assembly ile yazmak zaman olarak iyi bir tercih olmayabilir.
Assembly ile yazılan proğramlar işlemciye özeldir. Aynı kodu başka işlemcide kullanamazsınız, çünkü komut setleri farklıdır.

Ancak C dili ile yazılan proğramlar başka işlemcilere çok rahat taşınabilir. Nedeni C dili donanım ve komut setinden soyutlanmıştır. Size bir derleyici verilir ve siz işlemcinin çevresel  donanımlarını kurarak(registerlar) bir proje yaparsınız.
Birde mixed proğramming denen bir kavram var hem c hemde assembly'nin aynı anda kullanıldıgı projelerdir. Siz verimin ve hızın yuksek olmasını istediğiniz noktalarda araya assembly kod girersiniz ve performansı arttırırsınız.

Genelde interrupt'larda  assembly girilir ve daha bir çok nedeni var. Deneyim kazandıkça ve ihtiyaç hissettikçe nedenlerini daha iyi anlayacaksınız.

Ekleme : C ile proje geliştirmek kesinlikle kısa yolu tercih etmek değildir. Eğer C dilinin kurallarına hakim değilseniz birşeyler yaparsınız fakat kodunuz  allaha emanet çalışır. Her ikisini de bilmekte fayda var. Ayrım yok.

Esen kalın.