Benim işlemcim seninkini, benim C senin ASM yi döver.

Başlatan z, 13 Kasım 2009, 16:01:07

z

Zaman zaman gecmis yazilara bakip acaba hatali bir sey mi yazmisim, neden ustume gelinmis yada neden birilerinin ustune gitmisin diye konulari tekrar tekrar okurum.

Birbirimizle yuz yuze gelmeden yazi dilinde tartismak gercekten zordur.

Arkadaslardan birisi demiski;

C dilinde asm de olduğu gibi her satırın kesin bir numarası yoktur bu goto değimi bu yüzden çalışmaz c de herşey değişkenler ve fonksiyonlar üzerinden yürütülür.


Adresleme etiketlerinin kesin degerleri derleme asamasinda belirlenmez.
Bu Cde de asmde de boyledir. Kesin degerler birlestirme asamasinda yapilir ki bu bizi baglamiyor.

C de her satirin kesin bir numarasi yoktur cok yanlis bir iddiadir. Her bir komutun her bir verinin yerlestigi yerin kesin ve kesin bagil degeri bellidir ve  bir sonraki asama olan birlestirme asamasina bu degerler referans edilir.

Goto ile gezinmek C de tehlikelidir. Cunku goto pek ala stacka atilmis verileri staktan cekmeden ezik gezinmelere neden olabilir. Eger C nin altinda hangi kodlamanin yapildigini bilmiyorsaniz goto komutu kaza yapmakla es anlamlidir ve bu nedenle kullanilamaz.

Halbuki asm de gerekirse staga veriler atilip sonrada ret komutu ile gezinilebilir.

Bu tur numaralara ihtiyac duyup duymamak ilgi alaniniza bagli.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

lojikmemo1

Alıntı yapılan: "z"Zaman zaman gecmis yazilara bakip acaba hatali bir sey mi yazmisim, neden ustume gelinmis yada neden birilerinin ustune gitmisin diye konulari tekrar tekrar okurum.

Birbirimizle yuz yuze gelmeden yazi dilinde tartismak gercekten zordur.

Arkadaslardan birisi demiski;

C dilinde asm de olduğu gibi her satırın kesin bir numarası yoktur bu goto değimi bu yüzden çalışmaz c de herşey değişkenler ve fonksiyonlar üzerinden yürütülür.


Adresleme etiketlerinin kesin degerleri derleme asamasinda belirlenmez.
Bu Cde de asmde de boyledir. Kesin degerler birlestirme asamasinda yapilir ki bu bizi baglamiyor.

C de her satirin kesin bir numarasi yoktur cok yanlis bir iddiadir. Her bir komutun her bir verinin yerlestigi yerin kesin ve kesin bagil degeri bellidir ve  bir sonraki asama olan birlestirme asamasina bu degerler referans edilir.

Goto ile gezinmek C de tehlikelidir. Cunku goto pek ala stacka atilmis verileri staktan cekmeden ezik gezinmelere neden olabilir. Eger C nin altinda hangi kodlamanin yapildigini bilmiyorsaniz goto komutu kaza yapmakla es anlamlidir ve bu nedenle kullanilamaz.

Halbuki asm de gerekirse staga veriler atilip sonrada ret komutu ile gezinilebilir.

Bu tur numaralara ihtiyac duyup duymamak ilgi alaniniza bagli.

Her eleştiriyi kendinize hakaret sayacaksanız konu açmayın diyebilirmiyim:)

Cde satır numarsı yoktur tabiki aslında bu durum oop nin temelleri sayılır ama bakınız eski bir dil olan qbasic de vardır yanlış hatırlamıyorsam goto line komutu kullanabilmektedir ama gelin görünki qbasic artık işe yaramıyor.

Size katılmadığım noktalardan biri de asm de stack üzerinde işlem yapmanın kolay olduğu gibi bir yanılgıya düşmenizdir. asmnin eriştiği her bölgeye c de erişir zaten öyle olmasa dünya kadar insan bu dili kullanmaz. Ayrıca madem c bu kadar eksik (sizin tabiriniz) neden bu kadar kullanıcı sı var ve çok ileri projeler üretilebiliyor acaba?
Siz çok dar alanda asm kullanabilirsiniz ama c hakimiyeti olan herkez PHP,JAVA,C,C++, belki Pascal ile uygulama yapmak için çok çok 2 hafta uğarşır. Amacımız biz elektonikçiyiz sadece mikro programlar geçeriz mantığından kurtulmak lazım biz komple sisteme çözüm getiremeyeceksek zaten her zaman bişiler yarım kalır kanısındayım. Açıklık getirelim isterseniz mesela bir ethernet uygulaması yaptınız pcye bağladınız işiniz bitti mi ? ağ ayarlırın ayarlamaktan tutun modem switch gibi ekipmanları kurmaya kadar bir sürü kurulum vardır bunlar için bilgisayar servisi mi çağırıyorsunuz ki ben sadece mikro programlar geçerim diyebiliyorsanız daha detaya inelim mesela ethernet uygulamasında sıcaklık bilgisini ekrana (iexplorer sayfasına) 5 saniyede bir basmanız icab etmekte ne yapacaksınız etherneti kontrol eden mikro içine javascript komutlarını string olarak gömmeyecemisiniz bitmedi ayrıca javasicript server varible hakkında da bilgi sahibi olmanız gerekecek bunlar pc programcısını işi derseniz zaten size de gerek yok zira bu projede ne yaptınız sorunun cevapı çok minik olacaktır.
Kısace artık bir sürü teknoloji birbirine girdi iyi de oldu fakat hala asm de asm diye tutturmanın manası yok. asm düşmanı değilim sonuçta asmye en yakın dili kullanmaktayız fakat artık asm nin hantallığını kaldıracak bir ortam yok. 2 yıl önce yazdığım (özel bir firma için) kayan yazı uygulamasıdan abartmıyorum 5,200 satır c kodu vardı asm çıktısı ise 30,000 satır bittiğinde bir çok değişikli gerketi kolayca yaptık ama c dosyasının bile yüzünü görmek istemezken asm dosyası açıp düzenleme yapmak zulumden başka nedir. Bir ara kendi c derleyicimi yazmaya çalışıyordum (pic mikro için) onu da c ile yazmaya başlamıştım c ile birnoktaya gelmişti hatta üniversite yıllarında PLC tasrlayıp minik bir bölümünü çalıştımayı başarmıştım bunun bilgisayar ve mikro tarafını da c ile yazmıştık daha neler neler.
Neyse burda  ... yarışına girmek manasız ben kendi bakışaçımdan arkadaşlara özellikle yeni arkadaşlar tavsiyeler de bulunmak istedim yani amacım son derece pozitif idi kimseyi kırmak değildi.
İsteyen istediği ile yapsın fakat kullanıcı ürünün kalitesine bakar gerisi onu bağlamaz.

Hayırlı geceler.
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

z

ASM de stack uzerinde oynamanin nesi zor anlamadim. Haa dersenizki bana PIC 16 serisinde oyna kolaysa C de sen oyna derim.

C de, bir zamanlarin basic dilinde oldugu gibi satir numarasi yoktur ama Goto ile dallanacagin noktaya label verdiginde artik bir satir numaran vardir.  O da o etiketin adres degeridir.

Boyle bir numara yok bu nedenle goto kullanilmaz demene cevap yazmistim.

Cunku aynen soyle dedin.

Alıntı YapC dilinde asm de olduğu gibi her satırın kesin bir numarası yoktur bu goto değimi bu yüzden çalışmaz c de herşey değişkenler ve fonksiyonlar üzerinden yürütülür.

Network vs vs kismindaki yazdiklarin bizi konumuzdan uzaklastiran yeni durumlar. Daha onceki yazinda PC deki yazilimlarini ornek vermen uzerine PC yazilimlari ile ilgilenmiyor microlarla ilgileniyoruz cevabini verdik.

C ile compiler yazmaya calismissin. Ona kalirsa bende asm ile simulator yazdim. Benim yazilim da 64K lik bir com dosya oldu.

ASM adamina gore zor yada kolaydir. Burada sozu edilen adam CPU dur.

Eger hizla ilgili bir sikintin oldugunda islemci degistirmek icin cok gec kaldiysan forumda danis mevcut C kodlarina asm eklemende seve seve yardimci oluruz ve %99 ihtimalle hiz sorununu cozeriz.

Benim asm ile isim olmaz diyorsan o zaman buradaki tartisma ile isin olmamali.  Bir baska baslik altinda asm icermiyen C konusu acarsan orada C uzerine diledigin konulari tartisiriz. Ama bu baslik altinda değil.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

azimli

PIC32 işlemcisine C32 derleyicisi varken neden ASM ile program yazılır.
Ve bir avantajı varmıdır?

Günümüzde bir avantajı olacağını sanmam.

Bu işlemciyi nasıl olsa C32 üzerinden programı yazıp derliyoruz diye herşeyide hazır C32 fonksiyonları ile halldelim demek de hatalı olur.

İşlemcinin register ve konfigürasyon ayarlarına hakim olmak gerekir.
Bunları hazır C32 fonksiyonları ile yazıp geçmek işin kolayına kaçmak ve bir sorunla karşılaştığımızda suçu C32 ye atmak olur.

goto benzeri fonksiyon içi ve fonksiyon dışı herhangibir yere dallanma komutlarının C içinde olması demek onları kullanabiliriz manasında değildir.Bu komut kullanılarak yazılmış bir C kodunu derleyip ASM karşılığına baktınızmı hiç.

Bence endüstriyel mikro işlemcide C üzerinden programlamada goto dallanma komutu kullanımı büyük bir hatadır.

Ve kullananın C bilgisin yeterliliğinden şüphe ederim.

Kullandığı mikro işlemcinin Interrutlarının ve işe özel modüllerinin kullanımından bi haberdar olup kılasik eski mantıkla dijital değerlendirme ve bekletmelerle iş yapanında vede komut gecikmelerini hala hesaplamaya çalışanında günümüzde hem C hemde mikro işlemci bilgisinden şüphe ederim.

Elimizde nasıl olsa C var diye düşünür ve işi pro basic ve paskal derleyicisi mantığında kullanırsak büyük hatalar yaparız belki bu hatalar çok büyük olamaz ama hata hata dır ve göz göre göre yapılmaz.

nasıl olsa C derleyicisi kodları ASM ye dönüştürüp işlemciye atıyor diye düşünmekde bu yönden ASM yi olmazsa olmaz bir temelmiş gibi görmekde anlamsız o zaman ASM ninde altı dönüştürülüyor ve işlemciye öyle atılıyor derler bazen.

kolay kullanılabilirliği açısından insana yakın ve uzak olan programlama dillerinden bahsedilir burda C insana yakınlıkda ASM nin hemen üzerinde daha yakın olarak gösterilir.ama C ilede ASM nin etkinliğinde hızında seri işleyen işlemcinin mimarisine en uygun kodların yazımıda mümkün olsun diye mikro işlemci programlamada C var ve iyiki var olmasa ne yapardık veya en azından kendi adıma ne yapardım.

yine söylüyorum C ile ASM den daha etkin kod yazımı onu kişnetene bağlıdır.

nasıl olsa programı C ile yazıyorum diye işin cıvığını çıkarmaya da gerek yok her şeyi ve her yan donanımın kullanımını hazır C fonksiyonlarının argümanları üzerinden ve yapılan işe gereksiz kütüphane dosyaları ile kotarmak abeste iştigaldir.bunu yapanlar C ile programlar yazıp çiziyorum deme rahatlığından da bi haberdardır.git pro basic ve paskalla
yaz daha iyi.

günümüzde Microchip dsPIC ve PIC24 , yada PIC32 lere bakıldığında çok çeşitli C derleyiciler var

örneğin GCC,Hitech,Mikro C ve benzerleri bunlarla hiç Microchipin kendi C30 veya C32 derleyicilerini kıyasladınızmı?

bence en etkin olanı kendi yazdığı gibi geliyor her şeyi hazır sunmayıp ASM karşılığında C kodları kullanımını öngörüyor ve yönlendiriyor diğerlerinde her şey hazır hele GCC ve MikroC gibi özel derleyiciler kestane kebap C diye bunların hazır sunduğu kütüphane ve fonksiyonları kullanıp sonra ASM ile kıyaslamaya girilirse ASM yi bilemem ama C bazında hatalar yapılmış olur düşüncesindeyim.

bunlara ben geliştirilmiş C yazım metodlu basic ve paskal derleyicileri demeyi daha uygun görüyorum.

lojikmemo1

Alıntı yapılan: "z"ASM de stack uzerinde oynamanin nesi zor anlamadim. Haa dersenizki bana PIC 16 serisinde oyna kolaysa C de sen oyna derim.

C de, bir zamanlarin basic dilinde oldugu gibi satir numarasi yoktur ama Goto ile dallanacagin noktaya label verdiginde artik bir satir numaran vardir.  O da o etiketin adres degeridir.

Boyle bir numara yok bu nedenle goto kullanilmaz demene cevap yazmistim.

Cunku aynen soyle dedin.

Alıntı YapC dilinde asm de olduğu gibi her satırın kesin bir numarası yoktur bu goto değimi bu yüzden çalışmaz c de herşey değişkenler ve fonksiyonlar üzerinden yürütülür.

Network vs vs kismindaki yazdiklarin bizi konumuzdan uzaklastiran yeni durumlar. Daha onceki yazinda PC deki yazilimlarini ornek vermen uzerine PC yazilimlari ile ilgilenmiyor microlarla ilgileniyoruz cevabini verdik.

C ile compiler yazmaya calismissin. Ona kalirsa bende asm ile simulator yazdim. Benim yazilim da 64K lik bir com dosya oldu.

ASM adamina gore zor yada kolaydir. Burada sozu edilen adam CPU dur.

Eger hizla ilgili bir sikintin oldugunda islemci degistirmek icin cok gec kaldiysan forumda danis mevcut C kodlarina asm eklemende seve seve yardimci oluruz ve %99 ihtimalle hiz sorununu cozeriz.

Benim asm ile isim olmaz diyorsan o zaman buradaki tartisma ile isin olmamali.  Bir baska baslik altinda asm icermiyen C konusu acarsan orada C uzerine diledigin konulari tartisiriz. Ama bu baslik altinda değil.

Eyvallah sağol ama ben asm ile de çok iyi program yazabiliyorum ayrıca şu diller de de program yazabiliyorum problem olursa bende size seve seve yardım edebilirim. Asp.net,php,asp,java,javascript,html,c,c++,visualc(ve borlandc builder), c#.net bir ara da perl pascal gibi dillerle de çalışmıştım.
Zaten c ile kod yazarken hız problemi oluyor ve sen bunu yine c ile çözemiyorsan kusura bakma sen c programcısı değil henüz sempatizanısın sayılır.
Ethernet örneği bizi konudan uzaklaştırmaz ancak senin eksikliğinin ispatı olur zira ethernet uygulamasında da pic mikro var hadi buyur yaz bakalım sadece asm ile javasicript.
Stack üzerinde oynaması zor derken kastettiğimiz bunu derleyici kontrolüne bırakmak lazım müdahaleler debug ile zor bulanabilen hatalara nadiren de olsa sorun açabilir.
Seni modası geçmi asm ve değişime kapalı kişiliğin ile başbaşa bırakıyorum iyi geceler.
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

muhittin_kaplan

böyle iyi
bir basic ci :D (oda nasıl oluyorsa) olarak asm ile c nin birbirine girmesi iştahımı kabartıyor :S

lojikmemo1

Alıntı yapılan: "muhittin_kaplan"böyle iyi
bir basic ci :D (oda nasıl oluyorsa) olarak asm ile c nin birbirine girmesi iştahımı kabartıyor :S

Benzer bir münakaşayı basicle de yapabiliriz bir ara :D:D ama basic asm kadar dayanamaz hakkını yemeyelim :)
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

z

Eger hizla ciddi anlamda isimiz olmasaydi asm ye hic ama hic bulasmamiza gerek kalmaz C ile hatta asm gibi C ile tikir tikir kodlarimizi yazardik.

Butun dunyada, C  kolayliktir, hizli kodlama icin avantajdir anlasilirdir hiz gerektiginde asm ye gecmek sarttir deniyor ama bunu ben dedigimde C ustamiz (!) aksini iddia ediyor. Eminimki bir bildigi var.

Lojikmemo gercekten merak ettim. Hiz konusunda ne tip projeler yaptin da C de bu kadar kendine guveniyorsun?

Eger varsa bildigin bir seyler bize ogret ve C icinde asm yi kokten terkedelim.

Yap bize bir iyilik. Cunku asm yazim gercekten yorucu.

--------------------------

Hep hizi vurguluyor ve bunu onplana cikartmaya calisiyorum. Lakin hiz anlayislarimiz arasinda en azindan aramizda 10 kat fark var diye dusunuyorum.

Asagidaki yaziyi okuyun. Herne kadar mikrolar yerine hizin onemli oldugu dsp ler uzerine bir yazi olsa da C - asm konusunda tarafsiz bir yazi ve su ana kadar yazdiklarimla da bire bir ortusuyor.

http://dspguide.com/ch28/5.htm
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fatihkuzucu

Bu konu başlıgının amacı hangisi daha iyi ve o kullanılacaksa; verdiginiz linkte c nin daha iyi oldugu teraziden ortaya cıkmıs durumda. Ama siz teraziye değil sadece sizi destekleyen cümlelere odaklanacaksanız, size ne kadar anlatılsa hiç bir işe yaramaz.
Dünyada en zor şey insanların kafasındakileri değiştirmektir.

Not= Terazideki hesap düşük maliyet için yapılmış. MCUlar arasındaki fiyat farkları cok az olduğundan daha iyi mcuya gecme daha rahat ele alınsa idi oradaki C ağırlığı cok daha fazla olurdu.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

z

Koca yazidan anlaya anlaya teraziyi mi anladiniz? Onu da yanlis anlamissin.

Terazinin yanindaki yaziya gore;

C asm ye kiyasla esnek ve program gelistirme asamasi hizlidir.

Hizli kosan uygulamalarda , ASM daha iyi performans sergiler ve daha az az hafiza ister.

Sonucta da daha dusuk maliyet.

Terazi resmi, C nin Hizli gelistirme ve esneklik acisindan ASM den daha agir bastigini soyluyor, resimde ince espiri de var. Performans konusunda ASM kolu yukari cikmis.

Ben kendi isime gelen cumle yada kelimeleri secmedim.

Eger tarafsiz bir karsilastirma yerine asm ye yandas yazi secseydim vay halime.

Bu baslik altinda daha cok sey yazacaktim. Yazilarimda  ileride yazacagim diye aralara notlar dusmustum. Bunlara deginemedik.

Verdigim linkteki yazinin onunde ve arkasinda da yazilar var onlara da goz atin.

Son cumlelerim sunlar.

1) ASM ye bosu bosuna baglanmayin. Derhal C ye gecin.

2) Hiz konusunda sikintili rutinleri C ile kasmaya calismayin derhal o kisimlari inline asm ile yazin.  Ya da birlestirme asamasinda asm ile yazdiginiz obj bloklari ekleyin.

3) Tasinabilirlik zirvasina kafayi takmayin. Cunku bugune kadar zaten asm ile yaziyordunuz ve tasima derdiniz yoktu. C ile program gelistirme zamani cok azaldigi icin 10 bin satiri bile yeni bir islemci icin bir kac gunde yazarsiniz. Zaten cut copy var.

Benim gibi gelismelere kapali ve bagnaz fikirli birinin daha fazla yazmasi uyelerimize haksizlik olacak.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

CLR

Eski bir asm'ci olarak, C içinde asm kullanılabilecek yerler:

1) delay için
2) çok dar pulsleri adc ile okumak için gerekebilir
3) matematiksel işlemler

Bu gibi durumlarda işlemci yavaşsa C içinde asm komutları kullanılabilir.
İşlemci hızlı ise timer kurarsın olur biter veya adc hızlı işlemcide hızlı olur.
STM32'de 12bit adc mesela 1us'de convert edebiliyor.

Matematiksel işlemler için ise şimdiki işlemcilerin nerdeyse hepsinde
donanımsal çarpma ve bölme yapılarına sahipler.
Yani yine programın %98'ini C oluşturur, programın performans'ını programcı tecrübesi ve derleyici kalitesi belirler.

Önemli bir konu olarak yine işlemcilerde C optimizasyonu göre işlemci dizayn ediyorlar. Picproje E-dergi 2'de dspic ile ilgili kısımda bunu açıklamıştım. Detay'lı bilgiyi oradan alabilirsiniz. Yani register yapılarını C'ye göre dizayn ediyorlar ve asm komutları C'ye uygun komutlar.  Yani üreticilerde C'yi referans alıyor.

Ayrıca C ile 1 haftada yazılacak program, asm ile 1 ayda yazılabilir. Yani C ile 4 proje bitirirken asm ile yanlızca 1 proje bitirebilir diyebiliriz. Hemde C programlarını yazan programcı (asm+C) biliyorsa ve elektronik donanım bilgisi iyiyse sırf asm ile yazan kadar az program memory kullanır.

C'de yazılacak asm sadeliğinde C programını,  microchip, atmel, renesans, ST, NXP, texas ... gibi tüm üreticilerin 8bit,16bit,32bit işlemcilerinde çok ufak değişiklerle ve yine asm ile program yazmış gibi çıktı alabilirsiniz.

Asm ile ise PIC16'da yazdığını PIC18'e bile uyduramazsın değilki diğer firmaların işlemcilerine.

KUTAY
Knowledge and Experience are Power

azimli

8 bitlik bir endüstriyel mikro işlemciden bahsediyorsak yada pic serisinin 16-18F serilerinden bunlarda en yüksek hız 40MHz. komut yürütme 10Mips dir burda asm hız açısından c den iyi dir denebilir doğal olanda bu zaten bu işlemcilerin üretildiği dönemlerde bu çiplerin kullanımı asm üzerinden tasarlanmıştı sonradan c derleyicileri çıktı 18F belki c ye daha yatkın olabilir ama 16F ler zorlama ile c üzerinden programlanmaya çalışılıyor diyebilirim benim gördüğüm doğrusuyla yanlışıyla bunlar

gelelim dsPIC30F-33F ve PIC24 lere bu serilerin hızları 120 ve 160 MHz. olarak üretiliyor işlemcileri geliştirilmiş ve 16 bitlik kapasitede komut yürütme hızları 30-40 Mips genelde bölünmüş bu hız üzerinen tek saykılla bir komut işlerler

ve bu işlemcilerin üretildiği dönemde 2003 den sonrası diyebiliriz ve 2006 ya kadar geliştirildiler c ile programlam ön plana çıkarılıp c ile programlama temelleri üzerine kuruldular ama eskiden beri bir asm kullanıcısıda var hemde azımsanmayacak çokluda ne yapacak microchip firması asm desteğini kaldıracakmı hayır bu onnun için dezavantaj olur bu firmaların dini imanı para ama parayı kazanmak içinde manyak argeleri var mecbur adamlar asm desteğini devam ettirmekte

bu şuna benziyor pc lerde dos desteği dönemlerini hatırlayın dos olmadan windows olmaz hikayeleri falan hatta önce dos öğretirlerdi çok değil daha 5-6 sene öncesine kadar şimdi ne komik geliyor değilmi o kara ve mavi ekranlar noldu bu hipoteze?

aslında 8 bit ve 16 bit mikroları kendi arasında yalnızca hız açısından kıyaslamakda çok hatalı bence hız açısından 8-16 bit arasında 4 kat fark oluyor gözüksede gerçekde uygulamada bu daha fazla çıkar hız mimariler arasında yalnızca kristal darbe / komut işlem süresi ile kısıtlı değildir

bir sonraki seri 32bit PIC32 lere bakın 80MHz. ve 2 kıristal darbesiyle bir komut işletiyor ama 32 bit mamariden ve geliştirilmiş yapısından dolayı bir alt seriden daha hızlı bundada C ve C++ ile program yazımı gözetilerek geliştirilmiş bir mikro ama asm daha henüz kaldırılmış yabana atılmış değil

mplab editörünü kullananlar zannediyor c ile kod yazdığımda derlediğimde asm karşılığınıda görüyorum demek asm olmazsa olmaz yok böyle bir şey gün gelecek ara dosya çevrimi olmadan direkt hex kod dönüştürülecek asm kodlarını görmeyeceksiniz bile c den derleme ile asm kodlar gözüküyor asm vazgeçilmek demek hikaye işlemci versiyonu ve kapasitesi yükseldikçe c vazgeçilmez asm vazgeçilebilirdir.

ortalama hız kıyaslaması açısından;

16 bitlik mimarideki 33F ve 24F serisine bakalım komut yürütme hızı 40milyon/sn.

ortalama 1000 komut/satırlık bir program yazdık diyelim bir komut yürütme süresinide çok fazlasıyla 16 saykıl olarak görelim.

1000X16 = 16000 eder 40milyon/16000 = 2500 eder

demekki biz bu işlemcilere 1000 satırlık bir komut yazdığımızda ve her bir satırın 16 saykıllık bir zamanda işlendiğini düşünürsek (400 nano saniye zamanda) bizim progaramımız bir döngüde takılmıyor ve seri olarak devamlı aynı işi yapıyorsa saniyede 2500 kere bu programı işler.hız çok üst sınırlarda yani yabana taılacak tarzda değil.az muz bir hız değil yani.iş yaptırabilene artarda yeter bile.fazlasını zekat fitre sadaka olarak bile verebilir

ama siz C-C++ bilgisinden bihaberdar işlemci çalışma mantığından ve onun iç modüllerinden bi haberdarsanız işlemci modülleri ve interruptları ile işleri kotarmak yerine kılasik mantıkla nop while(1); gecik(); bekle();
komutları ile işlerinizi yapmayı planlıyor ve yürütüyorsanız bırakın 40mips hızı 140mips olsa bile yetmeyebilir.


dsPIC,PIC24 ve PIC32 den bahsediyor olsak;

C yi iyi kullanan birisi kullandığı işlemcinin özelliklerinede hakimse asm ye sıfır ihtiyaçla işlerini yapabilir.hemde asm hızıyla.belki asm kullanıcısı bırakın çabuk program yazıp geliştirmeyi vede okunabilirliği belki c kadar hızlı bir programda yazamaz.

burda kıyaslamayı asm ve c uzmanı olarak iki kişi ile yapıldığını ve işlemcinin donanımsal özelliklerine hakim olunduğu düşünülsün.

bunu bir ara denedim c de hızlı okunaklı kod yazılmasını asm ye karşı herkes kabul eder ama hızınında yüksek olduğunu kendi çapımda kanıtladım bir çok komutta c karşılığı asm dede aynı saykılı tutuyor hatta bazı kodlarda asm yi geçebiliyor.

diyelim tamam asm c den hızlı ve hızın ön plana çıktığı bir uygulama yapılıyor.işlemci zaten çok hızlı ne yapacaksınki bir bloğun %10 %15 daha hızlı çalışanını yapıpda o uygulamada çok gerek görürsen kullanırsın farklı bir donanım işin görülür

ama yok öyle hızlı olduğu falan asm nin c den daha fazla o günler geçti 2006 dan sonra üretilip geliştirilen 16 bit 30-40 mips hızlı microchip işlemcileri için bunlar direkt C30 ve C33 C24 üzerinden programlansın diye geliştirilen çipler.

80-90 komut kümeli asm yi  eski kullanıcılar alınmasın darılmasın diye koyuyorlar ne yapsın adam çipi satıp evine ekmek parası götürecek.

yarışa hazır olanlar varsa yarışalım! Microchip dsPIC30F serisi motor kontrol güç konversiyon end. mik. işlemcileri üzerinden varmısınız?

asm kullanıcısına komut kümesi 84 tür ben C30 kullanacağım.

kıyaslamayıda işi bilen form yöneticilerine ve üyelerine bırakalım.

tekrar ediyorum Microchip 16 ve 32 bit seri bir çiple program yazıp geliştiriyorsanız Microchip'in C derleyicileri olmazsa ikinci sırada HiTech'in C derleyicileri vazgeçilmez birer araçtır vede ücretsizdir.

kılasik çok özel olmayan bir kaç uygulamalardada sırf donanımsal bir çalışma gereken yerler dışında FPGA işlemcinin pabucunu dama atamaz atar diyende edebiyat yapmış olur.

FPGA ile Microchip işlemcileri kıysalanmaz daha hızlı ve 2-4 çekirdekli  
32-64 bit mikro işlemcilerde vardır FPGA bunlarla kıyaslanabilir.

FPGA denildiği kadar süper bir donanımsal yapı olsa içerisinde işletim sistemi veya bir takım uygulamaları çalıştırmak için mikro işlemci oluşturulmaz ve günümüz süper bilgisayara istemleri FPGA li olurdu.

diyorlarki çok pahalı o yüzden olmuyor her malın bir alıcısı vardır ürünü görelim para hazır ama sırf FPGA ile pc işi kotarılamıyor illa işin içine mikro işlemci yongası giriyor.

şu anda 32-64 bit tek çekirdekli bir nano saniye hızlarda komut yürüten endüstriyel mikro işlemciler var

bunların daha sonra 64 bit 4-8-16 çekirdek olacaklarını gözünüz kesiyor ve derleyici olarakda bu işlemcilerde C# öngörüldüğünü aklınız kesiyormu hızı şimdi FPGA ile kıyaslayın bakalım kapı mantığıyla silisyum germanyum teknolijisinin geldiği nokta ve bu çiplerde 1,1 volt eşik gerliminin varlığı kesin ve inilebilen minimum çip nano kalınlıkları belli daha nesi geliştirilecek FPGA lerin bir iki yeri işlemciler niye çok çekirdeğe geçti hızları daha fazla niye arttırılamadı teknolojisi müsait değilde ondan daha yüksek hız ve işlem kapasiteleri tek çekirdekle artık olmadığından dolayı.

gelecekte işlemciler çok çekirdekli ve C# derleyicili olacak ve kanımca çok çekirdekli olması programlamasını karıştırmayacak bu çekirdek iş yükü dağılımını derleyici halledecek biz yine tek çekirdek gibi 64 bit mimarisi üzerinden işlerimizi yürüteceğiz.

herkese iyi çalışmalar.

Not: Rütbe çok yazana veriliyorsa bu yazıdan sonra herhalde binbaşı olur um 4. (. 4 den sonra geliyorsa üncü diye okunur askeriyede yazman gerekir tabiki yazmassan cezası 40 katır ve sopadır) yıldızı alırsak

fatihkuzucu

Alıntı yapılan: "z"Koca yazidan anlaya anlaya teraziyi mi anladiniz? Onu da yanlis anlamissin.

Terazi tam dedigim gibi çalışıyor. Sizin bakmak istediğiniz yer farklı. Yada görmek istedikleriniz. Tüm bu yazılardan alınmış olabilirsiniz ama bazı konularda gelişmeye kapalısınız. Bu sizin araştırmacı yanınız olmadığını yada tümden yeniliklere kapalı olduğunuzu göstermez. Pek çok kişiden daha fazla araştırdığınızı görmemek için benimde gözlerimi kapalı tutuyor olmam gerekirdi...

There is also a way you can get the best of both worlds: write the program in C, but use assembly for the critical sections that must execute quickly. This is one reason that C is so popular in science and engineering. It operates as a high-level language, but also allows you to directly manipulate the hardware if you so desire.

Bu yazının özeti yukarıdaki cümlelerde var. Bunun anlamını da burada pek cok kez dile getirdiler.

eemkutay mesela güzel bir örnek (aşağıda) vermişti. Ve sürekli arada asm ile müdahalelere izin verildiğinden bahsediliyorken işi uzatmanın hiç bir anlamı yok.  Fazla iş yoksa asm ile devam edebilirsiniz. Ama işler projeler cok ise bu sekilde devam edilemez.

Alıntı yapılan: "eemkutay"
X=Y*15;        // burada herşeyi C derleyicisi yapar, 
X=(Y<<4)-Y; // Burada ise  C derleyicisine ne yapması gerektiğini sen
                    // söylersin


Bu yapıya asm sadeliğinde C denir. Bu sadece bir örnek, öğrenmek isteyenler için, asm'den C'ye geçecekler için fikir olsun diye.

Kutay
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

bigbey

Alıntı yapılan: "z"Son cumlelerim sunlar.

1) ASM ye bosu bosuna baglanmayin. Derhal C ye gecin.

2) Hiz konusunda sikintili rutinleri C ile kasmaya calismayin derhal o kisimlari inline asm ile yazin.  Ya da birlestirme asamasinda asm ile yazdiginiz obj bloklari ekleyin.

3) Tasinabilirlik zirvasina kafayi takmayin. Cunku bugune kadar zaten asm ile yaziyordunuz ve tasima derdiniz yoktu. C ile program gelistirme zamani cok azaldigi icin 10 bin satiri bile yeni bir islemci icin bir kac gunde yazarsiniz. Zaten cut copy var.

Benim gibi gelismelere kapali ve bagnaz fikirli birinin daha fazla yazmasi uyelerimize haksizlik olacak.
Kendinize haksızlık yapmayın. İsteyen herkes fikrini burada söyleyebilir. Gayet güzel bir konu devam edip gidilsin. ne güzel tartışılıyor.
Alıntı yapılan: "eemkutay"Eski bir asm'ci olarak, C içinde asm kullanılabilecek yerler:

1) delay için
2) çok dar pulsleri adc ile okumak için gerekebilir
3) matematiksel işlemler

KUTAY
Aynı şekilde katılıyorum. Gerisi teferruat. :lol:
TA6R

lojikmemo1

Alıntı YapLojikmemo gercekten merak ettim. Hiz konusunda ne tip projeler yaptin da C de bu kadar kendine guveniyorsun?

Tanısan tartışmazdın :) şaka bir yana ticari açıdan açıklamama doğru değil ama emin ol asm yi bilmeme rağmen c ile çözebilmekteyim bu c yi kullanabilme açısından derinleşmekle ilgili ayrıca c dili yukarıda bahsettiğim diğer dil, yapı, tekonlojilere yelken açmana izin verir. Var git sen asm ile yaz ben doğru bildiğimiz söylemek le yükümlüyüm vesselam.
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.