Bilmece Bulmaca ASM ile yapabilmece ama C ile yapamaca

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

z

Bilmece bulmaca sorularini hep Temel EE basliginda acmisiz. Bu konuyu da buraya actim. ASM ile de yerine gore "assembler"dan yerine "assembly"den, C ile de  C ve digerlerinden  bahsediyor olacagim.

Once onsoz,

Sinavda hoca soru sorar ve cozumde kullanilacak yontemi de belirler. Ornegin direnc devresindeki direnclerden birisinden akan akimin Super Pozisyon yontemi ile bulunmasi isteniyorsa soruyu Norton yada Thevenin ile cozerseniz sifir puan alirsiiniz. O halde cevap verirken sorudaki sinirlamalara dikkat edilmelidir.

Bazilarinin gereksiz buldugu ASM-C tartismalarinda ASM  ile ARM islemciyi dusunemiyorum, ASM ile Network Stack yaz da gorelim vs diye cevaplar oluyor.

Programlama cok genis cok kapsamli bir konu. Assembly her projede kullaniliverecek bir dil değil.  Bu nedenle  su programi ASM ile yaziver denince abes kaciyor. ASM ile her onune gelen uygulamayi yazmaya calismak da cok abes.

Abesdir cunku ASM ile programlama eziyet derecesinde zordur, zaman alicidir, hata yapmaya musaitdir. Bu nedenle daha yuksek duzeyde diller dercih edilir cunku yazmasi da okumasi da kolaydir.

Bu kisa giristen sonra; ASM ye ne gerek var? Bu yuzyilda ASM ile kod mu yazilir soylemlerinde bulunanlara bazi  sorularim var.

1.) C vs derleyiciler de mevcut oldugu halde ASM ile programlamanin sart oldugu ozel durumlarin gerekceleri nedir?

2.) Interrupt rutinlerini gerektigi zaman ASM ile yazarim  diyenler; sirf asm ile yazdiniz diye interrupt rutini daha mi hizli isler?

3.) Hizli isleyen ASM kodlarini yazmak icin siradan asm bilgisi yeterlimidir?

4.) Interruptlari senkronize etmek size ne ifade ediyor?

5.) Ana programin bir alanininda isleyecek kodun bir interrupt rutini ile senkronize islemesi size ne ifade ediyor.

6.) 4 ve 5 maddelerindeki durumlara ne zaman ihtiyac duyulur?

7.) Derleyici tarafindan en yuksek derecede optimize edilmis bir C programi daha fazla nasil optimize edilir?

8.) Gumus alasimli iletkenleri (kablolari) her onunuze gelen uygulamada kullanirmisiniz? Hangi sartlarda gumus alasimli kablo kullanirsiniz?

9.) Sular seller gibi C biliyor fakat ASM tecrubeniz yok. Yeni cikmis bir islemci icin derleyici yazma projesinde size hangi isi yikarlarsa ayvayi yersiniz?

Cevap yazarken hangi soruya cevap verdiginizi belirtin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

1. kod optimizasyonu
2. Optimize yazıldıysa Evet İşler
3. Hayır Yeterli Değildir. Hangi Asm Kodunun Kaç Saykılda Çalıştığını, Dolayısıyla İşlemcinin Yapısınıda bilmek gerekir
4. int ler arası öncelik planlaması
5. int rutininde çekilecek bir bayrağın, ana program ın akışının değiştirmesini ifade eder.
6. projenin gereksinimlerine göre -aynı anda iki kesme gelecekse sıralama yapılmalıdır-
7. Kodları didikleyip ASM ile düzenleyerek
8. -
9. - Ayvayı Yemem, Algoritma ve Okuma Biliyorsam İşin içinden Çabuk Çıkarım.

Icarus

1) Multimedia processing endüstrisi çok fazla kullanıyor.
2) Hayır
3) Hayır. Eğer bir C koduna bakıp derleyicilerin(çoğul) nasıl bir kod üreteceğini hayal edemiyorsanız. Bu işlere bulaşmayın.
8 ) Pahalı
Not olarakta şunu ekleyeyim; Programcılar ne C'yi nede asm'i tam kullanmayı bilmedikleri için problemin dilde, derleyicide, mimaride, vb... olduğunu söylerler ama gördüğüm genellikle klavye ile sandalye arasındadır.

RaMu

1) bence denetleyicinin yapısını anlamak için asm en az temel seviye şart bu bir durumdur,
2)Ben yazarsam işler, asmde iyiyimdir.
3)Yetmez benim bilgimde yetmez asm konuşuyor olmak gerek,
4)Bana bişe ifade etmiyor örnek söylersen anlarım
5)4 de söyledim zaten
6)4 ve 5 de bende bunu sordum
7)Bence asm ile dahada optimize olabilir, ya tamamen asm yazılacak yada asm lenecek, de ne gerek var?
8)Bu bence güzel örnek, gerektiğinde kullanırım demek.
9)Bilmeyen düşünsün benim kafam rahat, ama bende c bilmiyorum doğru düzgün.

Sonsöz,
sular seller gibi asm biliyorum ama sadece pic için ve sadece 16f ve dspic30f için,
denetleyici değiştirince neredeyse sıfırdan başlamış oluyorum,
ve şu anda c öğreniyorum,
c ile yazdığım herhangibir programda vir satır dahi asm kullanmadım,
birde c de asm kullanırken çok kısıtlama oluyor şikayetçiyim bu durumdan,
yani bsf status,c diyeceksem misal bsf 03,0 demek zorunda kalıyorum,
header felan tanımlamakda gerekiyor sanırım, aslında merak ettiğim birşeydi, neyse konu dağılmasın.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

kurumahmut

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24

Bu kisa giristen sonra; ASM ye ne gerek var? Bu yuzyilda ASM ile kod mu yazilir soylemlerinde bulunanlara bazi  sorularim var.

Ben bu kisiler arasinda degilim. Ama cevaplamak istedim.

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
1.) C vs derleyiciler de mevcut oldugu halde ASM ile programlamanin sart oldugu ozel durumlarin gerekceleri nedir?

Compilerin assembly cevirme tarzini begenmedigimiz durumlarda ya da compiler yazan arkadaslarin bizim ihtiyacimiza uygun islem icin #pragma olusturmamis olmasindan vs..vs..vs..

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
2.) Interrupt rutinlerini gerektigi zaman ASM ile yazarim  diyenler; sirf asm ile yazdiniz diye interrupt rutini daha mi hizli isler?

machine cycle, kullanilan register miktari, ana clock ve cpu gore degisir desem

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
3.) Hizli isleyen ASM kodlarini yazmak icin siradan asm bilgisi yeterlimidir?

mimarinin assemler kodlarini cok iyi bilmek yeterlidir. Gerisi asm bilginize ve algoritmaniza kalmis yani yetmedi

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
4.) Interruptlari senkronize etmek size ne ifade ediyor?
"shared resource" yeterli olur sanirim

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
5.) Ana programin bir alanininda isleyecek kodun bir interrupt rutini ile senkronize islemesi size ne ifade ediyor.
buna da "shared resource" yeterli olur sanirim

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
6.) 4 ve 5 maddelerindeki durumlara ne zaman ihtiyac duyulur?
buna da "shared resource" yeterli olur sanirim

yahu dedim 3 cevapta ayni olmaz terime bir bakim dedim
http://what-when-how.com/microcontrollers/interrupt-synchronization-microcontrollers/

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
7.) Derleyici tarafindan en yuksek derecede optimize edilmis bir C programi daha fazla nasil optimize edilir?
algoritmayi degistirmek yada optimizasyon teknigini degistirmek

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
8.) Gumus alasimli iletkenleri (kablolari) her onunuze gelen uygulamada kullanirmisiniz? Hangi sartlarda gumus alasimli kablo kullanirsiniz?
en son ne zaman kullandigimi hatirlamiyorum

Alıntı yapılan: z - 29 Ekim 2013, 14:22:24
9.) Sular seller gibi C biliyor fakat ASM tecrubeniz yok. Yeni cikmis bir islemci icin derleyici yazma projesinde size hangi isi yikarlarsa ayvayi yersiniz?
Sartlar bana uymasa da optimizasyon :)

z

@muhittin kaplan

Sorularimin uzerinde fazla dusunmeden cevap yazmissin.

3.) Komutlarin kac cycle calistigi ve islemci yapisi zaten dokumanlarda var. Bu bilgiye sahip olmak yeterlimi? Asla, asla, asla.

Bir diger baslikta algoritma yazma konusunu tartisiyorduk. Herkes program yazabilir fakat herkes algoritma yazamaz. Burada sozu edilen algoritma, sadece bir problemin cozum yolunun tanimlanmasi olarak anlasilmamalidir.

Evet kabaca tanimi o dur fakat algoritma, problemi optimize sekilde cozen yontemin adim adim aciklamasidir.

Algoritma mi yazidiniz program parcasi mi yazdiniz? Aradaki ince cizgi onemli.  Hizli kosan asm program parcasinin yazimi kendi basina algoritma tasarimidir.

4.) Interrupt onceligi tamamiyle fakli bir konu.

Ornek vermek gerekirse; ayni oncelige sahip iki interruptdan ismi A olan, hep ismi B olandan 100 mikro saniye once olussun dersek A interruptini B den daha once gelmeye zorlayacak kod yazimi gereklidir.

5.) Ana programda int gelmismi gelmemismi diye bir flagi kontrol etmek yeterli değil. Bu da farkli bir sey.

Ana program iligili label'a geldiginde interruptin uretilmemis olmasi,  int olusmasini beklemek icin daha onceden gelip orada pusuya yatmak gerekir. Aksi takdirde ana program ile interrupt senkronize olmaz. (Asenkron calisirlar)

6.) Tabiki ozel durumlar. Cok ozel durumlar. Mesela bir donanimi simule eden tamamen soft uygulamalar. Ne mesela hep ayni uc ornegi veririm. CRTC nin yazilimla yapilani.

Fakat sunu kesinlikle soyleyebilirim. 4 ve 5 den bi-haberseniz, islemci gucu yeterli oldugu halde bu is bu islemci ile yapilamaz daha hizli bir islemci lazim deyip kestirip atarsiniz. Halbuki belki daha yavas islemciyle bile yapilabilecek bir istir.

9. Ayvayi yersin.

Mektebi bitirmis muhendisler cogunlukla integral alma, diferansiyel denklem cozme, laplace islemleri hatta AC devre analizini bile unutur.

Integral cozmeyi unuttum ama notlarima bakarsam hatirlarim derler. Kimse senin integral cozmeyi hatirlamani bekleyecek zamana sahip değildir. O an kivrak oyunlarla cozdun cozersin baktin olay bu sekilde değil bir baska matematik oyun yaparsin. Her an beynindeki tum matematik hucrelerini isletecek durumda olman gerekir.

C komutlarinin uretecegi CPU komut siralamasini yazman icin senin ASM ogrenmeni de kimse bekleyemez. Beynindeki ASM hucreleri her an aktif olmalidir. Kaldiki derleyici yazimindan (optimize asm kod uretecek iddiali programdan) bahsediyoruz. Eger bu sartlara haiz değilsen projenin asm bilgi gerektiren ayagi icin uygun kisi değilsin demektir.

Bu ekipte super asm kodlama yapabilecek adamlardan bir kac tane olmak zorunda.

Bu mesaji hazirlarken gelen diger iki cevaba hizlica goz gezdirdim. Icarus'un isaret ettigi

"Not olarakta şunu ekleyeyim; Programcılar ne C'yi nede asm'i tam kullanmayı bilmedikleri için problemin dilde, derleyicide, mimaride, vb... olduğunu söylerler ama gördüğüm genellikle klavye ile sandalye arasındadır."

Bence super bir gozlem.

ASM yi laf olsun diye kotuleyenler aslinda detaylari bilmiyorlar.

8.)

Manyak gosterisli sigara paketi boyutlarinda zarif bir de kutu icine  1kw lik bir amplifikator tasarladiniz. Yapamazmisiniz. Yaparsiniz.

Simdi bu kutuya 220v'u  yada kabin baglantilarini 0.75 lik tele sahip kibar teyp kordonu vs ile yapamazsiniz. Kesiti artirip kalin bir kordon kullanmak da amfinin zarif goruntusunu bozar.

Iste cok cok pahali da olsa 0.5 lik tellere sahip gumus alasimli kablo, teknik gereksinimlere cevap verirken sizin zerafet anlayisinizla da uyusur.  Birisi elma mi dedi ne?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Ramiz

1) Burada detaylarını anlatamayacağım bir projede pic işlemci için c18 de yazılım yazdım. İşlemciyi işin bir kısmında adım adım çalıştırmam gerekiyordu. Yani 100 nano saniyede bir komut işlemem gerekiyordu. (İşlemci tek çevrimlik asm kodlarını 100nSn de işliyordu) Programın bu kısımlarını Asm ile, kalan kısımlarınıda C ile yazıp işin içersinden çıkmıştım.

Diğer sorulara yanıt vermeyeceğim. Çünkü Tüm sorulardaki ana tema veya öğrenilmesi gereken şey şu.

- Asm bilmenisiniz. Bu şarttır.. (Aksini düşünenlerle tartışmayacağım bile..)
- Asm ile herşeyi yazmaya direnmeyin. Asm yi askerler olarak düşünün. C yi onbaşılar, yüzbaşılar gibi düşünün. Daha basic dilleride Generaller gibi düşünün. Asm ile herseyi incik incik işlemeniz gerekir. Teker teker! On başılar ile onar onar, Basic ile yüz biner yüz biner olarak işlediğinizi düşünün.

Örnekten anlayacağımız gibi basic gibi diller sizi hemen sonuca götürür. C ortada kaldı. Asm için çok kodlayıp, saç yolmak gerekir ama basic gibi dillerde yazdığımız koların alt planına inemeyiz. Yani shiftout diye bir kod yazdığımızda bu kodun iç yapısını elleyemeyiz(örnekler çoğaltılabilir). C için if, while yada for döngülerine dokunamayız(örnekler çoğaltılabilir). Asm ile herşeyi biz yaparız..


Yukarıda sadece derleyici optimizasyonu ile ilgili farklı bir soru var. Oda şöyle ki,

Mesela A = A * 2; derseniz işte bu sizin derleyicinizin math anlayışına göre bir asm kod çıktısı verecektir.
Ama     A = A << 1; derseniz c derleyiciniz rlf   A, f komutu üretecektir.

Olay aşağı yukarı bu. Yazdıklarıma birkaç şey daha eklenebilir. Varsa yanlışlar düzeltilebilir ama bu konunun ana fikri "asm bilmek şarttır. Önemli yerlerde C içersine gömülerek kullanılması mantıklıdır. C kullanmak mantıklıdır. Herşeyi asm ile yazmaya çalışmak mantık dışıdır."

Üzerine daha çok tartışıp, vakit kaybetmemek gerekir diye düşünüyorum..
Electrical & Electronics Engineering -> Step one

z

Hocam inline asm kullanarak IRET icin sac bas yolmadan yapsaydiniz.

ASM de kodlamaya baslar baslamaz optimize kod cikartmak kimin haddine? Zaten programin tamamini optimize yazmaya ugrasmayiz ki. Fonksiyon bazinda optimizasyonla ugrasiriz.

Bir de elektronikcinin program anlayisi ile programcinin program anlayisi bayagi bir farkli oluyor galiba.


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

musti463

şuan için assembly öğrenmek zor geliyor açıkçası
Mustafa Emir SADE

Icarus

Alıntı yapılan: gerbay - 29 Ekim 2013, 20:40:03
multicore ya da SMT destekli işlemcilerde ASM ile yazmaya kalkarsanız çok büyük hata yaparsınız zaten.. hyperthreading i gözönünde bulunduran bir derleyicinin ürettiği gibi kodu ASM ile asla o kalitede yazamazsınız..
?? bu kısmı tam anlayamadım çünkü derleyicilerin sizin tasklarınızı otomatik paralleleştirme gibi bir olayı yok.
Hatta çoğu zaman örneğin derleyicinin SIMD desteği vermesi demek kodunuzu böyle optimize ettiğini değil, sadece programcının bu instructionları kullanabileceğini söyler.

z

Verdiginiz ornekler  elektronikciler icin uygun ornekler değil. (Paralel islem vs). Tek core yada multicore uzerinde paralel islem komutlarini ASM ile yazmamizi istemek haksizlik.  Gorece olarak kucuk (kisa) uygulamalar icin bu komutlari kullanarak ASM ile son derece optimize kod uretebiliriz. Fakat konuyu boyle orneklerle saptirmayalim. (Her kez satranc oynayabilir fakat iki kisiyle ayni zamanda satranc oynayan nadir insanlar var)

Bir ara bilgisayarcilarla (Programcilarla) elektronikcilerin program anlayislari uzerine, elektronikcilerin program islerine nasil bulasmak zorunda kaldiklarinin hikayesini konusalim. Bu konusulmazsa %99 C deyip durursunuz. Belki de bu %1 ile deginmek istedigim konulara ihtiyac duyan uygulamalardan bahsediyorsunuz.

Karno, minterm, maxterm, Quine Mccluskey falan da konusalim. Sonra bunlarla ASM arasindaki iliskiden bahsederiz. Kapi gecikmelerinden bahsederiz. Kapi gecikmesinin yazilimda neye esdeger oldugundan bahsederiz.
Bunu anladiginizda  C yerine neden ASM tercih edilecegini de anlayacaksiniz.

Haklisin artik 8051 devri değil. Yeni islemcilerin komut seti C ye yatkin tasarlanmaya basladi dolayisi ile  ASM si de o kadar guzel ve anlasilir olmaya basladi. Cunku C okumasi ve yazmasi kolay dildir.

%99 uygulamalari geciniz. O %1 lik kismi konusalim. Sizin deyiminizle neden o %1 lik  uygulamalar asm ile kodlamayi ister?

Satranc dedim de iyi satranc oynayanlar bir kac hamle ilerisini dusunup hamle yapar. C derleyiciler kac hamle ilerisini gorup kod uretiyor.

Bir projeden dolayi kodları "Hitech"de C ile yazmam gerekti. Uretilen kodlari yeterince inceleme firsatim oldu. Simdi Hitech'i oven bir  C kullanicisi asm ile niçin kod  yazorsun C derleyici optimize kod uretiyor asm hammallik derse bir tarafimla gulerim. Ayni gulusu Keil icin soyleyenlere de yaparim.

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

muhendisbey

Temelde ASM ile C arasında iki yapılamayacak iş görüyorum. Birincisi kod optimizasyonu, ikincisi ise enerji tasarrufu. Aslında ikincisi de kod optimizasyonuna dahil edilebilir.
C'nin çok fazla avantajı var. Hızlı programlama verilebilecek güzel bir örnek. Bir şeyin iyi yanlarının olduğunu kabul ederken götürüsünün olabileceğini de düşünmek gerekli.
ASM ile yazması zor. Datasheeti hatmetmeniz lazım. Bu konuda ASM öğrenmek gerçekten büyük sıkıntı.
ancak ASM sistemin nasıl yürüdüğünü anlatır. C'de bu detayı bilmenize gerek yok.

C'de yazdığınız kodların alt yapısını bilmediğinizden kodun tabanını bilmezsiniz. GPIO kullanacaksan tanımlarsın kütüphanesini okursun açıklamaları yazarsın. Zannetmiyorum ki birisi de "bu kütüphanenin altında ne var?" desin, açsın registerlara baksın. İnce işle uğraşmıyorsanız bence de gerek yok.

C'yi öğrenirsiniz, yazdıklarınız yeri gelir istediğiniz sonucu vermez ASM ile tabanına iner düzeltirsiniz. C derleyiciler genel olarak programı ASM'ye aktardıktan sonra hex kodlarını üretir. Bu konuda bülent hocam son derece haklı.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

Mr.Java

#12
Yani tüm konunun özü şu aslında;

ASM komut seti bellidir.Bunları bilin her komut seti üzerinde gerektiği kadar uygulama yapın,mantığını anlayın ve bitirin.C ile uygulama geliştirirken zaten gereken yerlerde herkes ASM'ye ihtiyaç duyar bu kaçınılmaz.Fakat projenin tamamını ASM ile kodlamak hataya müsait,takibi zor ve yeni başlayan birisi için zahmetli olacaktır.XC8 derleyicisi ise kod optimasyonunda gerçekten çok iyi.

Zaten herhangi bir işte tamamen uzmanlık seviyesi 10 yılı  buluyor.Forumumuzda da C ve ASM tartışmasını yapmak ancak bilgilerimiz doğrultusunda oluyor.Bu nedenle "bu tartışmaları açanlar C ve ASM ye tamamen hakim değiller !" demek biraz abes kaçıyor.

C zahmetli ve öğrenilmesi zor dillerdendir.MCU programlamasını anlatan kitaplar sürekli if else while ve for döngüsünden çıkamazlar.Help dosyalarını türkçeye çevirir koyarlar önümüze.C'de bir type qualifiers ,recursion ,String yapıları,Class'lar gibi konulara hiç değinilmez.Mevcut Copy/Paste yapılan kodlarda commentlerde ezbere gidilen kalıp dışı ifadelerde google translate yaparlar.Gerçi tüm dillerde böyle java bilen adama sorun Overriding nedir diye muhabbeti dinleyin.Soruyorum gerçekten C bu mu?

z

Fakat insanların ağzına yapışmış "ASM ile yazmak hamallıktır", "bu devirde asm mi kullanılır"  söylemleri.

Adam daha yeni yetme. Bu söylemlerde bulunuyor. Neden? Çünkü forumda böyle deniyor. Ben de yok bu böyle değil diyorum.

Başlıktakli ana giriş yazısını dikkatli okursanız programlarınızı baştan sona ASM ile yazın demiyorum. ASM komutlarla kod yazdınız diye kodlarınız hızlı koşacak da demiyorum. Her kez ASM öğrensin/kullansın da demiyorum.

Dikkat çekmek istediğim konularla ilgili 9 soru sordum. Bu soruların çok da dışına çıkmayın istiyorum.

Konuyu biraz uğraşla aşağıdaki mesajımda değindiğim alana kanalize ettim. Bu noktadan sonra lütfen C-ASM mukayesesi yapmayalım. %1 lik dilime giren projeler için tartışalım.

Alıntı yapılan: z - 30 Ekim 2013, 11:15:07
Verdiginiz ornekler  elektronikciler icin uygun ornekler değil. (Paralel islem vs). Tek core yada multicore uzerinde paralel islem komutlarini ASM ile yazmamizi istemek haksizlik.  Gorece olarak kucuk (kisa) uygulamalar icin bu komutlari kullanarak ASM ile son derece optimize kod uretebiliriz. Fakat konuyu boyle orneklerle saptirmayalim. (Her kez satranc oynayabilir fakat iki kisiyle ayni zamanda satranc oynayan nadir insanlar var)

Bir ara bilgisayarcilarla (Programcilarla) elektronikcilerin program anlayislari uzerine, elektronikcilerin program islerine nasil bulasmak zorunda kaldiklarinin hikayesini konusalim. Bu konusulmazsa %99 C deyip durursunuz. Belki de bu %1 ile deginmek istedigim konulara ihtiyac duyan uygulamalardan bahsediyorsunuz.

Karno, minterm, maxterm, Quine Mccluskey falan da konusalim. Sonra bunlarla ASM arasindaki iliskiden bahsederiz. Kapi gecikmelerinden bahsederiz. Kapi gecikmesinin yazilimda neye esdeger oldugundan bahsederiz.
Bunu anladiginizda  C yerine neden ASM tercih edilecegini de anlayacaksiniz.

Haklisin artik 8051 devri değil. Yeni islemcilerin komut seti C ye yatkin tasarlanmaya basladi dolayisi ile  ASM si de o kadar guzel ve anlasilir olmaya basladi. Cunku C okumasi ve yazmasi kolay dildir.

%99 uygulamalari geciniz. O %1 lik kismi konusalim. Sizin deyiminizle neden o %1 lik  uygulamalar asm ile kodlamayi ister?

Satranc dedim de iyi satranc oynayanlar bir kac hamle ilerisini dusunup hamle yapar. C derleyiciler kac hamle ilerisini gorup kod uretiyor.

Bir projeden dolayi kodları "Hitech"de C ile yazmam gerekti. Uretilen kodlari yeterince inceleme firsatim oldu. Simdi Hitech'i oven bir  C kullanicisi asm ile niçin kod  yazorsun C derleyici optimize kod uretiyor asm hammallik derse bir tarafimla gulerim. Ayni gulusu Keil icin soyleyenlere de yaparim.


Millet C öğrensin diye forumda ne çok çaba gösterdiğimi bir kenara atmayın. Atmayın da ASM konusunu açınca da ayağıma dolaşmayın.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

drozk

Merhabalar.
Bahsettiğiniz yüzde birlik dilime girer mi bilmiyorum ama başımdan geçen bir olayı paylaşmak istiyorum. Genelde asm. kullanırım. Asm. ile yazdığım bir kodu aynı işi yapacak şekilde C ile tekrar yazdım. Hi-tech C ile derledim.  Değişkenlerden bazılarının hiçbir zaman sıfır olmaması gerekiyordu. Çünkü interrupt rutininde de kullanılan bu değişkenler sıfır olduğunda işlemci hatalı sonuç üretiyordu.  Derleyicinin ürettiği kodu incelediğimde "x=1" komutunu derleyicinin "clr X / inc X" olarak asm.ye çevirdiğini gördüm. "clr X" komutundan sonra interrupt rutini çalışınca hata meydana geliyordu. Böyle bir sorunu asm. bilmeyen bir C programcısı farkedebilir mi?. Bence zor.