Makale Projesi

Başlatan DumrulBey, 08 Ocak 2005, 08:56:48

DumrulBey

Merhaba,

Arkadaşlar, aklıma birden fazla yazarın katılabileceği bir makale proje fikri geldi. Bilmiyorum ama derleyicileri tanıtan bir makale yazıldımı, yazılmadıysa yazalım mı? Buna hemen aşağıda başlayabiliriz. Bence de başlayalım çünkü bu işi bir kişi yapsa ne kadar objektif olur! Üstelik her dilde aynı şekilde kim uzman olabilir?

Yöntem şu: Herkes en iyi bildiği dili kendince övüp, bazı sevmediği özelliklerini ise yersin. Yani objektif yaklaşalım. Gerçi forumda bu konuda bir çok yorum yapılmıştır. Ama dikkat, yorum dedim! Yani makale amacıyla herkesin anlayabileceği bir üslup kullanılmamış olabilir. Ayrıca yazdıklarımızı 'qutoe' etiketi içine yerleştirelim. Böylece yorumlar ile karışmamış olur.

Böyle bir yazının bana da, başka kişilere de faydası olacak. Düşünsenize ekileşimli (interactive) bir makale. Bitince başlığı kitler sonra ana sayfaya koyarız. Ama herkes sohbet eder gibi değil de özenerek yazsa, ne güzel olurdu. Buna eminim yazı yazmaya niyetli ama vakit bulamayan herkes olumlu bakacatır. Çünkü kolay yoldan ortaklaşa bir eser çıkaracağız. Eser dediğimi küçümsemeyin. Zira kitap yazmak şart değil, iki-üç mısralık şiirler bile eser olabiliyor...:)

Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

DumrulBey

Tekrar Merhaba,

Aslında böyle bir makale gerçekleşirse bir çok kişinin emeği geçtiği için çok değerli olacak. Ama bu iş kolay değil. Yani yazılanları birbirleri ile uyumlu olması gerekir. Ayrıca her derleyici hakkında aynı dolgunlukta yazı çıkmayabilir. Bu yüzden belki makaleyi tamamlamak için konusunun uzmanı kişileri bulup ısmarlama yazı istemek gerekecek. Ama ne olursa olsun bence çok güzel olmaz mı? Hepsinden öte birlikte bir iş yapmak çok manidar...

Bence bu makalede assembly dilini dışarıda bırakalım. Çünkü hem teknik olarak hem de gönlümüzde bu dilin yeri ayrı. Adı üstünde bu bir dil, diğerleri ise teknik açıdan assembly kodu ürettiği için derleyici olarak nitelendirmek daha doğru olur. Yani diyebiliriz ki "Assembly tartışılamaz!" Gerçi tartıştık ama nasıl...:)

Şimdi görünüşe göre BASIC ve C derleyicileri üçten fazla var. Şu an başka aklıma gelenlerden Pascal ile Java derleyicileri de var. Başka var mı? Gerçi olsa da şimdilik çok dağılmamak için üç-dört ana başlığık yeterli. Ama her başlık için ne yazılıyorsa derleyici ismi ve sürümü yazarsak karışmaları engelleriz. Mesela örnek olmak amacıyla CCS PIC C için bir başlangıç yapayım:

Alıntı yapılan: "Salih Dinçer, CCS PIC C 3.211 hakkında"DERLEYİCİ ARABİRİMİ (IDE):
Metin editöründen öte bir arabirimi var! İsmi "PCW C Compiler" ve görünümü XP şeklinde. Ayrıca ufak dahili/harici araçlar ile desteklenmiş. Bunlar:

Device Selector (Sürücü Seçici): Desteklediği tüm yongaları (PICs) öne çıkaran özellikleri ile listeleyen ve filitreleme özelliği sayesinde tek incelemeden en uygunu seçmeye yarayan çok pratik bir araç. Ayrıca 'Device Editor (Sürücü Düzenleyici' ile listede bir takım değişiklikler yapabiliyorsunuz.

File Compare (Dosya Karşılaştırma): Her ne kadar bu konuda bir sürü araç olsa da el altında bulunması iyi düşünülmüş. Açıklamaya ihtiyaç yok, zira işletim sistemlerinde bile bu araçlardan var.

Numeric Converter (Sayısal Dönüştürücü): İşaretli/İşaretsiz, HEX ve float (küsüratlı) değişkenleri kolay hesaplamaya yarayan küçük bir araç.

Serial Port Monitor (Seri Geçit İzleyicisi): Araçtan öte, sanki başlı başına ayrı bir program. Anlatmak asıl yazılımı gölgeleyebilir. Ama makro özelliği bile olduğunu söyleyebilirim.

Disassambler (ASM Dönüştürücü): Orijinali kaybedilmiş HEX kodları için birebir. C uyumlu etiketleme sistemi bile düşünülmüş. Harika bir araç!
Son olarak 'Extract Calibration Data' diye bir araç var ama ben anlamadım. Bilen varsa yazıya ekleyebilir. Ayrıca ICD araçları ile internet menüsü var. Internet menüsünde web bağlantıları içeriyor. Bunlar web ile etkileşimli uygulamalara yönlendirilmiş. Aslında şu son yazdıklarım da yazıya dahil edilebilir. Ama şimdilik yorum olarak kalsın.

Alıntı yapılan: "Salih Dinçer, CCS PIC C 3.211 hakkında"Editörün menüleri standart sayılsa da özellikle 'Edit' menüsü normalin üstünde bir özelliğe sahip. Sırasıyla menüler:
- File (Dosya)
- Project (Proje)
- Edit (Düzen)
- Options (Seçenekler)
- Compile (Derleme)
- View (Görünüm)
- Tools (Araçlar)
- Debug (Hata ayıklama)
- Help (Yardım)


şeklindeler. Tabii ki menü altında düzenlenebilir araçlara da sahip. Aslında tıpkı 'Edit' ve 'Tools' menüsünde olduğu gibi 'View' menüsü de çok ayrıntılı özelliklere var. Yani kodu yazdığınız gibi bırakmayıp en ince detayına kadar bilgi sahibi olabiliyorsunuz. Özellikle 'Debug' menüsü ile birlikte kullanıldığında kod iyileştirmelerde çok mesafe kat edebilirsiniz.

Ayrıca 'Project' menüsünü hiç yabana atmamak gerek. Özellikle proje sihirbazı (Project Wizard<Manuel Create) başlangıcı çok rahat yapmanızı sağlıyor. Öyle ki üstün özellikli PIC'lerin "özellikle karmaşası" içinden yüzünüzün akıyla sıyrılabiliyorsunuz. Bazen uzman olsanız bile hızla gelişen mikrodenetleyicilere ayak uydurmak zor olabiliyor.
Aslında bu editör kısmını anlatmak neredeyse ayrı bir makale konusu. Hatta yazdıkça içimden yazacak ne çok şey varmış diye geçiriyorum. O yüzden elimden geldiğince kısa kısa yazmaya gayret ediyorum. Sanırım böylesi diğer arkadaşların yazacakları ile bir denge sağlar.

Alıntı yapılan: "Salih Dinçer, CCS PIC C 3.211 hakkında"KODLAMA ARABİRİMİ (IS):
'C', tek bir harf! Bu harf sanki fazla söze gerek bırakmıyor. Ünündenmidir yoksa harfin güzelliğindenmidir bilemiyorum. Gerçi ilk testler daha başarılı olsaydı belki bu dile 'B' diyecektik. Demek ünü! İşte bu durum anlattığımız yazılıma da yansımış.

Görebildiğim kadarıyla standart C komut kümesinin (Instruction Set) tamamı var. Hatta pointer (işaretleyici) bile oluşturuyorsunuz. Yazılım ile gelen örnekler ise doyurucu. Burada anlatmak istediklerimin çoğu bu örneklere bakılarak anlaşılabilir. Ama bir kaç noktaya parmak basmak istiyorum:

Geçitler (ports) birleştirme: Bu özelliği ilk öğrendiğimde derleyiciye sevgimi 10'a katlanmıştı. Belki basit bir özellikti, belki assembly ile biraz kafa patlatarak bu düzen sağlanabilir. Ama küçük bir kodlama ile yapılması (not: assembly hali, her kullanımda kodu gözle görülür bir şekilde arttıracaktır) sıkıştığınızda hemen başvurabilmenize olan tanıyor. Malumunuz sistem kaynaklarınız kısıtlı. Öyle bilgisayarlardaki gibi hiç değil. O yüzden sağda solda kalan giriş-çıkışları bir geçit haline getirebiliyorsunuz.

Kesme (interrupt) kullanımı: Tek kelimeyle çok kolay! Şimdiye kadar mikrodenetleyici ile uyumsuzluğunu görmedim. Belli kurma ayarlarını yaptıktan sonra etiket kullanır gibi rahatça kesme alt programınız ana program içinde kullanabiliyorsunuz.

Kütüphane (driver) zenginliği: Her yeni kütüphaneyle tanıştıkça 'assembly'de kodlama yaparken kendi kütüphanelerimi oluşturduğum dönemi hatırlıyorum da ben niye bu derleyici ile daha önce tanışmamışım diye duygulanıyorum. Gerek firmanın yayımladığı gerekse kullanıcıların kodladığı çok zengin bir kütüphane imkanınız var. Her ne kadar yazılım ile birlikte gelen 100 civarı ise de iyi bir araştırma yaparsanız bir bu kadar daha kullanıcılardan temin edilebilir. Edemediniz diyelim ki, o zaman kendi kütüphanenizi oluşturabilirsiniz.
Dediğimi gibi bu yazdığım bir örnekti. Ben bu dile yeni başladım sayılır. Benden daha iyi bilen kişiler var. Onların yazılarını dört gözle beklemekteyim. Lütfen az da olsa yazın işte bir şeyler. Bakınız bu yazdıklarım bir saatimi aldı. Herkes bir saat ayırsa süper bir makale çıkar. Bir de bu makaleyi bir kişinin yazdığını düşünün, günlerini alır!

Eleştriye gelince! Aslında pek eleştirilecek yanını göremedim. Ancak bileşen üreticilerinin, yazılım için kütüphane üretmemesi bence büyük eksiklik. Sonuçta üretilen parçayı en iyi üreticisi bilir. Alsınlar assembly veya C bilen bir elaman, kullanıcılar için kütüphane üretsinler. Öyle ya, CCS derleyiciyimi geliştirecek yoksa sürücü desteğinimi arttıracak. Nasıl Windows için sürücüler üretiliyor bu da aynı şekilde olsa bence daha güçlü bir yazılım olurdu.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

DumrulBey

Merhaba,

Ne oldu arkadaşlar korktuk galiba...:)

Hadi kullandığınız derleyici hakkında iki cümle bir şey yazın. Neticede klavyenin tuşları elinize yapışmaz. Olsa olsa sözleriniz makaleye renk katar. Mesela yazdığım derleleyici hakkında daha önce yapılan şu iki yorum bence çok kıymetliler:

Alıntı yapılan: "Erol"CCS'in ozellikle matematiksel işlemlerle arasi pek iyi değil. 16 bitlik sayilarla biraz calistim sayesinde ASM'yi cozdum. Kullandigin her fonksiyonu dogrumu diye bir de .LST dosyasindan izlemek zorunda kaliyorsun, cunku guvenilir değil. En basitinden 16C712 icin ADC'yi kapat diyorsun. kapatamiyor. include dosyalarina mudahele ediyorsun aaa duzelmis. Tabi yaptigi islemleri LST dosyasindan izlersen olayin farkina variyorsun. Yani datasheet'i elinden birakamiyorsun.
...
Alıntı yapılan: "ahmetu"...benim gördüğüm en önemli farklar CCS'nin constant (sabit) yapıdaki verileri point edememesi yani program hafızasında duran değişmeyen veriler, pointer'ı point edememesi (char** value gibi ama ben bunun için bir yöntem geliştirdim (char*)*value) birde linker kullanmaması ama donanımla ilgili tüm fonksiyonları (i2c, spi, interruptlar vs..) rahatça kullanabilmek için bir sürü komut yazmışlar.
Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)