Bilmece Bulmaca ASM ile yapabilmece ama C ile yapamaca

Başlatan z, 29 Ekim 2013, 14:22:24

speak48

Z nin asm ile derdi ne acaba
şu anki cpu lar  zaten gelen kullanım için
komut setleri artimetik,lojik,akış kontrolü,byte bit transferi
bunları asm ile yapsan ne c ile yapsan ne.

%1 lik işlerdede zaten %1 e özel işlemci olması gerekirki onu asm ile daha kaliteli programlayasın.
network processorü,dsp,fft processorü...


camby

%1 'lik kısım Özel işlemci ile yapılabilecek şeyleri kapsamıyor.

Birileri bu işlemcilere ait derleyicileri yazan tarafta işini yapıyor biliyorsunuz değil mi ?

Birileri de buna uygun mimari geliştiriyor ? Mevcut sistemleri yutup yenilerini düşünüyor , derleyici bölümüne iletiyor. vsvs

Low level'de çalışan mühendis sayısının high level'da çalışanlara oranı nedir ?

İşin mutfağını geçtim ,

basit bir kontrol algoritmasında bile

yada basit bir TFT ekran sürme kodunda bile yazdığınız C kodlarının en mükemmel kodlar olduğunu ve daha hızlı çalışamayacağını söyleyebilirsiniz. Kaldırıp eteğin altına bakmadığınız sürece doğrusunu bilemeyebilirsiniz.

Sadece C'de yazdığınız sürece pic16 ile STM32F arasındaki farkı anlayamazsınız. ( STM32'leri ASM yazmadım , ama kaldırıp ne var ne yok diye baktım )

Genele, ortaya yazıyorum : )

z

Gerbay

Ayağıma dolaşmayın derken seni kasdetmedim.

Bilgisayarcı ile Elektronikçiyi mukayese etmeyelim derken etmek zorundayız. Bilgisayarcı derken yani yazılım işleri uğraşanlardan bahsederken büyük veri yığınları üzerine işlem yapan işlemcinin cycle işleriyle işi olmayan ama sonuçta kod yazması gerelen kişilerden bahsediyorum.

Bu adamlarla ASM tartışması falan yapılmaz. Bu adamı ASM ile neden hamallık yapıyorsun derse bunu yadırgamam. Ama aynı söylemler elektronikçilerin formunda olursa vamminüt derim.

Kapı gecikmesi ile yazılım arasında bir bağlantı kurabildin mi?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

camby

Alıntı yapılan: gerbay - 30 Ekim 2013, 16:42:19
daha net yazayım;

şu an güncel mimarilerde eğer ASM ile yazarsanız kodlarınızın daha YAVAŞ çalışma ihtimali yüksek..

Evet bunda ben de hem fikirim.

z

Bu iş böyle olmayacak Gerbay. 3-4 hamle ilerisini görerek aynı anda 4...5 kişiyle  satranç oynamaktan bahsediyor ve hep uç nokta örnekler veriyorsun.

Ben hala kapı gecikmesinin softwaredeki karşılığı nedir soruma cevap alamadım.

Bildiğin gibi kapı gecikmesinin en büyük nedeni çipin giriş çıkış kapasiteleri yani istenmeyen kaçak kapasitelerdir. Bu kapasiteler arttıkça çipe giren sinyal gecikmeli olarak işlenir ve gecikmeli olarak çipten çıkar. Peşpeşe bağlı lojik kapı sayısı arttıkça gecikme süresi de artar.

Peki bir yazılım parçasında benzer gecikmelerin sebepleri nedir?

Nano teknoloji ufak işlerle uğraşır. Bir maddenin özelliklerini taşıyan ve daha küçük parçalara ayrılamayan parçalarına atom denir.

Nano teknolojik yazılım işleri de ASM dili ile yapılır. Çünkü ASM atomik komutlardan oluşur. Siz C'nin moleküler boyuttaki komutlarıyla atomik işler yapmaktan bahsediyorsunuz.
Dediğim gibi o %1 lik kısımlara dönelim.

Bana Keil'de CM3 için öyle iddialı öyle iddialı bir optimize C kodu yaz ve en yüksek hızda çalışacak şekilde optimizasyon seviyesinde derle ki, çıktıda yeralan yaklaşık bir kaç yüz bytelık asm kodlarına bakalım ve bir kod ancak bu kadar olabilir bir Allahın kulu bunu ASM ile daha optimize yazamaz diye iddia et ki biz de gerçekten optmize edilebiliyormu edilemiyor mu görelim. Haa bunu iddia edemiyorsan ayak altında bu kez dolaşma.

Eğer haklıysan ben de artık bu forumda ASM nin A sını ağzıma almayayım bu konuda başlıklar açmayayım.

Birilerinin muhakkak C derleyicilerini test etmek adına ortaya koyduğu kriterler vardır.

@Camby

Hemfikir olduğun konuda verecek örneğin varmı?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

 Z micro denetleyicilerle bu tür kafa yorma işlerini bence boşa yapıyor.
altı üstü mikrodenetleyici donanım sabit.

sayısal donanım tasarımı konularına girerse orda bu tür olaylar istemediği kadar var.

z

@speak48

Led yakıp söndürme işlerinde 10ns gecikmeye sahip lojik çipler kullanmak gerekmiyor.  1ms lik kapı gecikmeye sahip çipler bile fazlasıyla yeterli.

1ms lik gecikmelerin sorun olmadığı uygulamalarda ben de tutup 10ns lik çip kullanmam.

Ben kapı gecikmesiyle atıfta bulunuyorum. Anlayana...
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

Alıntı yapılan: z - 30 Ekim 2013, 19:00:56
1ms lik gecikmelerin sorun olmadığı uygulamalarda ben de tutup 10ns lik çip kullanmam.

böyle bir sorun yoksa c yerine asm kullanmanında bir anlamı yok

z

Aynen öyle. Hatta C ye de gerek yok. Basic de olur.

Ama biz tam tersi durumlar için konuşuyoruz. Elinde 10us lik kapılar var. 100 tanesini tren gibi dizersen oluyor sana 1ms. Halbuki bunların 300 tanesini kaldırıp atabiliyorsun.

700us nerde 1ms nerde. Bu 300us un hesabını vermeye calısıyoruz.

İşlerini BASIC ile yürüten ne gerek var C ye diyecektir. İşlerini C ile yürüten de ne gerek var ASM diyecektir. Sistem aynı sistem.

Haaa Basic yavaş C kullan derlerse ben de C yavaş ASM derim.

Öncelikle uygulama ne? Eğer uygulamalar Bu forumda konuşulan sorulan sorularda olduğu gibi yavaş işler uygulamaları ise açtığım başlık son derece gereksiz ve müslüman mahallesinde salyangoz satma işinden farksız.

Led yak led söndür LCD de sonuç göster, RF ile veri aktar. Sonuçta yavaş işler yavaş işler.

Adam C'de PID kodu yazıyor fakat float işlem yapıyor.

Ne diyeyim ki. Niye çenemi yorayım ki?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Kabil ATICI

Gecikme konusuna en basit örnek 150 tane bellek hücresini sıfırlayacağız diyelim,
bunu normalde 150 sayaca bağlı döngü ile 150 tane hücreye 0x00 yazılır. Ama zaman açısından kriktik bir uygulama ise bu 150 döngünün biriktirdiği gecikme karşımıza işlemlere yetişememe gibi bir sorun olarak çıkar.
bu durumda 150 tane belleği tek tek sıfırlamak hız açısından ciddi bir avantaj sağlar. Zorluğu programın yazılmasıdır. (işlemcisine göre her döndü 2-3 saat darbesi gecikme getirir)

Diyelim band üzerinde hareket eden bir nesne üzerine bir kartuştan yazı yazılacak. Diyelim ki üzerinde kullanabileceğimiz 150 tane delik var. Ve bunlar mux olarak adresleniyor.  Bu noktada o döngülerden gelen gecikmeler oldukça büyük rakamlara ulaşabiliyor. Çünkü adreslemeler bile en azından 150 tane döngüyü gerektiriyor.  Şimdi 1 metre/ dakikalık bir hızla mı yazılacak, yoksa 4 metre/dakikalık bir hızla mı? İşte toplam gecikmeler aradaki bu farklı belirliyor.
Bu 8 bitlik 14MHz saat frekansı ile yapılmaya çalışılırsa, yazılan kodda artık 1 "nop" komutunu bile kıskanır hale gelinir.
ambar7

z

Alıntı yapılan: gerbay - 30 Ekim 2013, 19:03:18
@speak48,

@z hocam diyorki,  gerbay bu işlere bulaşınca ben de onun uzmanlık alanı dışında birşeyi sokuşturuyum araya, bu şekilde ayağımın altında dolaşmasın...

dediği gibi;  bana atıfta bulunuyor

Ahh Gerbay ahhh. Bu cevabın bana "Öküz altında buzağı aramak" deyişini aklıma getirtti.

Buradaki "anlayana" sana değil de  kapı gecikmesinin yazılımdaki karşılığı ne olur sorusunu anlayana idi. Ama sen de anlamamışsın.

Madem cevap gelmedi cevabını da ben vereyim.

" Kapı gecikmesinin ne anlama geldiğini aslında hepimiz biliriz. Sonuçta kapı gecikmesi, bir girdiye karşılık, alacağımız çıkışın ne kadar gecikmeli elde edileceğini belirler.

Y=!A işleminde, A uzunca bir süre 0 olsun. Dolayısı ile Y de uzunca süreden beri 1 dir.
Fakat aniden A=1 yaparsanız Y hala 1 de kalır. Biraz sonra Y=0 der.

Eğer yazılan/üretilen asm kodlar arasında anlamsız/gereksiz/ikilenmiş ekstra asm kodlar varsa, bu durumda bir kapının gecikme süresi gibi yazılımda da gecikme süresi oluşur.
Bu gecikme süresi yazılımcının algoritma geliştirme yeteneği zayıfsa ve dile hakim değilse daha da artacaktır.   


Basic vs sonuca anormal ölçüde gereksiz kodlarla dolambaçlı yollardan ulaşır. C bu konuda çok çok iyidir Bir makine parçasının üretebileceği en iyi kodları üretir ama idealden çok uzaktır. ASM siz ne derseniz onu üretir.  Dolayısı ile asm insanın makineye karşı bir kod üretme savaşıdır.

Bir yazılım zaten bir girdiye karşılık anında çıktı üretemez Çünkü yazılım, doğası gereği ardışıl işlemler yaparak sonuca ulaşır. Eğer ardışıl işlemler arasına anlamsız/gereksiz/çiftlenmiş ilave kodlar konuyorsa yazılımın sonuca ulaşma süresi de artar. Bir döngü içerisinde kullanılan kodlar döngünün frekansını belirler.  Eğer döngünün frekansını artırmak istiyorsak döngü içinde olabildiğince az kod kullanmamız gerekir.

İşte ASM sizi bu kodlarınız arasında kırıntı kod bırakmadan program yazmanıza olanak tanır."

ASM ile makineye karşı verilen savaş çok yavaş kazanılır. Canı tatlı olanlara, çabuk sıkılanlara önerilmez.

Haa bu çokmu önemli diyenler çıkacaktır. 

Ne işle uğraştığınıza bağlı. Gerbayın bahsettiği %1 in içindemisiniz dışındamısınız?

1 kg keçi boynuzu yiyip elde edeceğiniz 10 gr şekere muhtaçmısınız değilmisiniz?

Siz olmaya bilirsiniz. Ama bilin ki 10 kg keçiboynuzu yiyip 1 gr şekere ihtiyacı olanlar var.

Umarım o tip projelerle karşılaşırsınız. (Bu duamdır)  Umarım yapamaz ve o gün paracıklarınızı gavura kaptırırsınız. (Bu da benim sizlere bedduam olsun)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

camby

Eger asm de etkn bir sekilde kod yazamiyorsak , hizli olsun diye yazdigimiz asm kodu , optimize c kodundan daha yavas calismasi muhtemeldir.
Asm yi de iyi kullanmak gerekir.
Optimize kodlari olusturan c derleyicisini yazan kisiler de yeterince sure kafa patlatmislardir asm konusunda.
Fakat asm ye hakim olunca bu durumun onune gecilebilir ancak

z

Gerçek dünyada bir cephede kazanılan zafer, savaşı kazanmaya yetmiyor.  Programın bir bölümünü asm'ye çevirerek o cephede zafer kazanabiliriz. Fakat burada elde edilen zafer savaşı kazanmak anlamına gelmez.

Fakat öyle cepheler varki örneğin interrupt cephesi vs... Buralarda kazanacağınız tek bir çivi bir atı, tek bir at bir yiğidi, tek bir yiğit de savaşın kaderini değiştirebiliyor.

Yok ben atla savaşmıyorum ben doğrudan uçakla bombalıyorum derseniz asm ile hiiiiç işiniz yok.  O zaman  gümüşten kablolar kullanırsınız yakışır.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Yuunus

   "Z" bedduan mı tuttu nedir üç gün önce oturup asm örnekleri yazmaya başladım, C kodundaki sadece 100 ns saniyelik kayıp yüzünden, demekki çekeceğimiz varmış. Bedduan tuttu gözün aydın   >:( söylediğin %1 lik kısma girer yada girmez bilmem ama 15 sene sonra beni mecbur bıraktı ona kızıyorum.

hasankara

16f876a çip i ile asm konusunda ciddi bir ilişiğim olmuştu. o zamanda entegrenin sınırlarına gerçek anlamda ulaştığımı hissedebilmiştim tabi yazdığım kodların amatörce yazıldığının şimdi bilincinde olabiliyorum. yazdığım kodları hep bir düzene sokma çabasında bulunmaktaydım ve gerçek zamanlı çoklu işlem olayını asm ile amatörcede olsa bir süre sonra başarmıştım. Tabi bu şans eseri ortaya çıkmadı ihtiyaçtan dolayı ortaya çıkmıştı. real time multitasking yapamadan o entegreyle hedeflerime ulaşmak nerdeyse imkansız. hedefime ulaşabildim ve istediklerimi real time multitasking sayesinde yapabildim hatta üstüne o entegreyle daha birçok şey yapılabilir kılmıştım. tabi bu yapının ismini dahi bilmiyordum.

3 (üniversite 1. sınıftayken) sene önce yaptıklarımı görenler neden c de çalışmıyorsun dediklerinde c yi tam bilmiyordum ve asm de kurmuş olduğum bu yapıyı c de yapamama korkusu vardı içimde hep ilk başta biraz herkes gibi itiraz etmiştim. bunun açıklaması çok basit en iyi yol bildiğin yol diye bir teori ile yaşamaktayız. bence zaman varsa başka yolları da denemek gerekiyor bu kadar kısa kestirip atmamak gerekir. 2. dönemde zorunlu c dersinde c nin ne kadar esnek bir dil olduğunu ve bir çok profesyonelin bu dili kullandığını gördüm. şimdi aynı yapıları c üzerinde de kurabiliyorum hatta bu yapılar için bir standart oluşturulamaz mı arayışına dahi girdim.

yani uzun lafın kısası real time multitasking in getirisini görebilen birisi olarak buna elektronikçilerin de ihtiyaç duyduğunu düşünmekteyim. hatta bu sayede rakiplerin çok rahat önlerine geçilebilecek piyasa kurulabilinir. asm kodu arada okumak gerekiyor bunun faydasını da görüyorum. ancak asm de yazma gereksinimi duyduğum zaman derleyicinin kullanım kılavuzunda anahtar kelimelerden aratınca ihtiyacım olan şeyi c de bulabiliyorum yani bunları derleyici tasarlayan adamlar düşünmüş oluyor bile. ona rağmen ihtiyacımızı derleyici sağlamıyorsa asm e muhtaç kalabiliriz bununda bilincinde olmak gerekir. c dede zaten öyle açık bir kapı var #asm #endasm.