Selamlar arkadaşlar,
emre adında dil uydurup MCU için compiler yazmak istesem nereden başlamalıyım?
Daha sonrada ücretsiz bir ide yi kullanıp paket çözüm yapmak istiyorum.
Daha önce compiler yazan arkadaşlar seve seve yardımcı olacaktir
aslında fuzuli ama eğlenceli bir iş.kendi asm dilini kullandığından eşref adalıdan başlayabilirsiniz.
Teşekkürler,
Not aldım ancak, bahsettiğim MCU'nun asm sini yalayıp yuttuğumu farzediyorum.
Ayrıca fuzuli iş değil, yazıp satacağım.
Tanıdığım birisi böyle bişey yapmıştı. Ama çok gelişmiş değildi. Sadece MCU nun assembly kodlarını türkçeye çevirmek gibi bişey yapmıştı. Eğer gelişmiş bişey yapmak istiyosanız programlayacağınız işlemcinin bellek yapsını iyi öğrenip ona göre bellek organizasyonu yapmanız gerekiyo.Ben de FPGA da kendi tasarladığım işlemci için kendi dilimi oluşturmak istiyorum en büyük sorunlardan biri bu.Mesela bi değişken tanımladın bu değişken belleğin hangi adresinde tutulacak. Ya da hangi durumlarda stack kullanılacak bu tip.Biz C ile kod yazarken bu tip şeyleri düşünmüyoruz.Bunları derleyici bizim için yapıyo. Bu sorunları hallettiğiniz zaman geri kalanı daha basit gibi duruyo.Tabi eğer optimizasyon yaptırmayacaksanız.Eğer gelişmiş bir derleyicideki gibi optimizasyonları yaptırmaya kalkarsanız bunlar başlı başına büyük sorun.Ev arkadaşım bilgisayar mühendisliğinde okuyo bitirme ödevi için java dilini kullanarak c derleyicisi yapıyo. Ama java için hazırlanmış fonksiyonlar var onlar sayesinde syntax kontrolü ile hiç uğraşmıyo sadece optimizasyon algoritmaları kendi yazacak.Eğer kendi diliniz için değil de c dili için derleyici yazacaksanız böyle fonksiyonları kullanabilirsiniz.
Bi de merak ettim böyle birşeyi ne amaçla satın alacaklar.Yani C dili gayet yeterli. Birisinin ödevi falan mı? :)
C derleyicisi zilyon tane var, zilyon tanede farklı yüksek seviyeli diller ve derleyicileri.
İnsanlar (özelliklede işin low-level'ına bulaşmadan iş yapmak isteyenler),
neden c ve asm dışında yüksek seviyeli bir dil i kullanıp derleyicisinin satın alıyorlarsa benimkinide onun için alacaklar :)
bence önce kendi dilinizin kurallarını sağlam bir şekilde ortaya koymanız lazım. dediğiniz gibi bir de mcu nun asm sini yalayıp yutmak lazım. sonrası programlama yeteneğinize kalıyor. dilinizde ne kadar çok durumu, olasılığı değerlendirip asm ye ordan da makine diline çevirirseniz o kadar kapsamlı bir derleyici olur diye düşünüyorum.
www.stack.nl/~marcov/compiler.pdf (http://www.stack.nl/~marcov/compiler.pdf)
bir compiler yazmak yerine blok halinde veya ladder mantığıyla proramlama üzerine bir derleyici yazarsan hedefine ulaşabilirsin bence.böylece aynı PLC de olduğu gibi kullanıcı olayın low-level ine bulaşamadan kontrol işlemleri gerçekleştrilebilir.
Bu başlıkta kimsenin "oo derleyici mi yazacaksın, boşver, bırak bu işleri, adamlar yazmış zaten, git kullan" felan dememesine çok sevindim.
GNU Derleyicisi açık kaynak kodlu olduğundan ona da bakmak faydalı olabilir.
benim aklıma bişe takıldı diyelim derleyiciyi yazdık bunun için asm ve programlama bilgisi zaten mecbur gerekiyor. yazdığımız derleyici çok güzel bir şekilde hex çıktısı da alıyor fakat bu hex kodlarını mikroişlemciye nasıl aktaracaz. bi tanede seri port veya usb den hex kodunu alıp çipe atacağımız devreyide kurduk peki ya bu devre hex kodlarını çipe nasıl yazacak .örneğin benim bildiğim pic programlanırken 2 tane pinden hex aktarılıyo biri clk diğeri dataydı galiba bu aktarma işlemi nasıl oluyor bunu merak ettim :)
hocam bence nasıl yaparsanız yapın işi önce basit ele alın. daha sonra işi bilimsel yönde inceleyin. detayda gömülüp kalmayın. sonuç elde ederseniz bu sizi motive de eder.
Alıntı yapılan: bilal0052 - 05 Nisan 2012, 14:43:44
benim aklıma bişe takıldı diyelim derleyiciyi yazdık bunun için asm ve programlama bilgisi zaten mecbur gerekiyor. yazdığımız derleyici çok güzel bir şekilde hex çıktısı da alıyor fakat bu hex kodlarını mikroişlemciye nasıl aktaracaz. bi tanede seri port veya usb den hex kodunu alıp çipe atacağımız devreyide kurduk peki ya bu devre hex kodlarını çipe nasıl yazacak .örneğin benim bildiğim pic programlanırken 2 tane pinden hex aktarılıyo biri clk diğeri dataydı galiba bu aktarma işlemi nasıl oluyor bunu merak ettim :)
Konuyu saptırma bence. Bu başka bir başlığın konusu.
@elektroemre sana önündeki uzun yolda kolaylık dilerim. @gerbay gerekli bilgileri vermiş zaten. Geriye oturup bolca zaman harcamak kalıyor. Ek olarak bu konuda çalışmaları olmuş bir arkadaşın sitesinin linkini veriyorum.
FireX Dili (http://www.alpgulec.com/)
kendi compilerimizi yapmanın avantajını tam olarak anlamadım.piyasa cok düzgün çalışan compiler varken ve bu uğraşı zamanını bu hazır compiler ları kullanarak süper projeler yapmak varken neden amerikayı tekrardan keşfetmek için harçıyalım.ama olay şöyle ise bilemiyorum basic,fotran,delphi,c gibi bir çok programala dili var coğu birbirine benziyor bunlardan farklı cığır açıçak bir dil henüz yok sanırım.senin yapacağın compilerde insalara farklı alternatifler suanabilecekmi? amacın nedir?
Alıntı yapılan: fractal - 05 Nisan 2012, 17:37:21
kendi compilerimizi yapmanın avantajını tam olarak anlamadım.piyasa cok düzgün çalışan compiler varken ve bu uğraşı zamanını bu hazır compiler ları kullanarak süper projeler yapmak varken neden amerikayı tekrardan keşfetmek için harçıyalım.ama olay şöyle ise bilemiyorum basic,fotran,delphi,c gibi bir çok programala dili var coğu birbirine benziyor bunlardan farklı cığır açıçak bir dil henüz yok sanırım.senin yapacağın compilerde insalara farklı alternatifler suanabilecekmi? amacın nedir?
CCS C var, hitech c var, mikro c var. Arkadaş birde emre c olsun istemiş demek ki :) Onunda kullanıcısı çıkar elbette. Bu yolda sana başarılar dostum.
Alıntı yapılan: fractal - 05 Nisan 2012, 17:37:21
kendi compilerimizi yapmanın avantajını tam olarak anlamadım.piyasa cok düzgün çalışan compiler varken ve bu uğraşı zamanını bu hazır compiler ları kullanarak süper projeler yapmak varken neden amerikayı tekrardan keşfetmek için harçıyalım.ama olay şöyle ise bilemiyorum basic,fotran,delphi,c gibi bir çok programala dili var coğu birbirine benziyor bunlardan farklı cığır açıçak bir dil henüz yok sanırım.senin yapacağın compilerde insalara farklı alternatifler suanabilecekmi? amacın nedir?
Bence çığır açmasına gerek yok, bir yerlerden başlamak gerekli birinin bunu yapması gerekiyor devlet yapmıyor kişilerde yapmazsa hiçbir zaman bir başlangıç olmayacaktır.
mikroe nin derleyicilerinin bir çığır açtığını hiç sanmıyorum ama sonuçta bir sektör olarak sanırım yugoslavya da faaliyet gösteriyorlar. (ben bile Türkiye nin taşra olarak nitelenen bir şehrinde derleyicisini almasamda başka bir ürünü olan programlayıcısını 2009 yılından beri kullanıyorum).
Dediğim gibi bu girişim bir sektörü ortaya çıkarır. Ülke adına çok faydalı olacağını düşünüyorum ve arkadaşıma başarılar diliyorum umarım bu isteği kırılmaz.
şu noktaya katılıyorum anglo-saksonun yada çekik gözlülerin compilerını kullanacağıma yerlisini tercih ederim
Öncelikle ciddi yorumlarınız için teşekkür ediyorum arkadaşlar.
Sayenizde başlangıç kaynaklarına ulaştım.
Özellikle gerbay hocam gerçekten güzel dokümanlar.
Şunu belirteyim, birazcık olgunlaştırdıktan sonra bireysel bir uğraştan daha ciddi bir iş olacak.
Çıkan ürün gerçekten güzel olursa ticari olarak satmak büyük mutluluk olur benim için.
Ama ilk amaç bu değil, en kötü ihtimalle reklam değeri taşıyacak çalışma ve başka şeylere vesile olacak.
compiler işini tek başına yapamassın ticari amaçlı olarak mikroc pro pic32 takımı saymadım ama 30 kişi vardır bir sürü kütüphane hazırlaman lazım
bence zevkine hobi amaçlı uğraş
birde kod optimizasyonu yapman lazım daha az kodla aynı işin yapılabilmesi için
" bireysel bir uğraştan daha ciddi bir iş olacak" ile kastım zaten bir ekiple çalışmak.
Ancak önce somut bir şeyler sunmak lazım insanlara.
Emre bilgisayar dillerinden hangisini biliyorsunuz?
program ismi buldum "EMC" OLSUN SANA YARDIMCI OLURUM
ccs deki derleme sonucu oluşan .lst uzantılı dosyada c kodları ve asm kod karşılıkları var, kaydedicileri kullanım şekli belki yardımcı olabilir.
http://www.csistem.org/about/csdos.php (http://www.csistem.org/about/csdos.php)
Bu proje kapsamında makaleler, seminerler ve tartışma platformları yoluyla geniş bir bilgi birikiminin elde edileceği umulmaktadır.
Projenin hedeflerinden birisi de ülkemizde bu tür çalışmaların özendirilmesidir.
Yapacağın iş illaki işe yarayacaktır.
Alıntı yapılan: sakkan - 05 Nisan 2012, 15:27:42
hocam bence nasıl yaparsanız yapın işi önce basit ele alın. daha sonra işi bilimsel yönde inceleyin. detayda gömülüp kalmayın. sonuç elde ederseniz bu sizi motive de eder.
Alıntı yapılan: serdararikan - 05 Nisan 2012, 13:52:20
bir compiler yazmak yerine blok halinde veya ladder mantığıyla proramlama üzerine bir derleyici yazarsan hedefine ulaşabilirsin bence.böylece aynı PLC de olduğu gibi kullanıcı olayın low-level ine bulaşamadan kontrol işlemleri gerçekleştrilebilir.
iyi fikir:)
Merhaba arkadaşlar,
Konuyu açalı yaklaşık 7 ay olmuş. Kaydettiğim ilerlemeyi paylaşmak istedim.
Yazın yaklaşık bir ay boyunca bu konuya yöneldim.
Öğrenelim deneyelim, lexical analyzer, parser, intermediate code generater opitmizer derken, herhangi bir hazır tool kullanmadan şuan gerçek anlamda çalışan bir compiler yazdım çok şükür.
Assembler kısmıda bitmek üzere. Oda bitince kaynak kodu alıp, hex dosyasına dönüştürecek tam bir compiler olacak kısmetse ama okul sebebiyle 2 aydır ara vermek zorunda kaldım.
Tabi iş bununlada bitmiyor, ondan sonra bir çok optimizasyon, built-in libraryın hazırlanması alpha ve beta test aşaması.
İtiraf etmeliyim başlarken gerçekten bu işi yapabileceğimden emin değildim, başta @gerbay hocam olmak üzere desteğini esirgemeyen tüm arkadaşlara teşekkür ederim.
V 1.0'ı da buradan paylaşmak nasip olur inşallah :)
Teşekür ederim hocam benim için şeref olur :)
Şuanki compiler MSP430 core için kod üretiyor. (MSP430X core henüz desteklenmiyor)
Aslında sadece code generator ve üst katmanlarda bir kaç değişiklikle bir kaç ay içerisinde başka mimariye destek verebilirim (esas hedefim Cortex-M3-M4 zaten) ancak şu gerçeği farkettim, compiler yazamaktan çok sonrasındaki support sıkıntılı bir iş...
----
Birde math expressionların parse edilip tree'lere çevrilmesi ve sonrasında minimum temp değişkene göre optimizasyonu aşamasında bir ara beyin kanaması geçireceğim zannettim kodları yazarken. Allah başka acı yaşatmasın söylemeden edemeyeceğim ;D
İtiraf edeyim! Başlığı ilk gördüğümde, bir süre hobi olarak uğraşıp; sonra bırakacağını düşünmüştüm. Azmin elinden bir şey kurtulmazmış. Tebrik ederim.
Helal olsun.
Alıntı yapılan: Klein - 11 Kasım 2012, 23:53:09
İtiraf edeyim! Başlığı ilk gördüğümde, bir süre hobi olarak uğraşıp; sonra bırakacağını düşünmüştüm. Azmin elinden bir şey kurtulmazmış. Tebrik ederim.
Aynen.
Bundan sonrası için de yeniden taze bir gayret.
Tebrikler hocam. :) Gerçekten güzel bir çalışmaya başlamış ve devam ettirmişsin. Başarılarının devamını dilerim.
Vakit olsa bende yazmak isterdim.Başarılar dilerim.
Hocam ardunio tarzı bir yazılım mı olacak?
İyi dilekleriniz için teşekkür ederim arkadaşlar.
@mert07 hocam, şuan herhangi bir compiler (ccs xc8 vs) gibi, pek bir farkı yok, kendine özgü syntax'i olan bir dil.
Elimdeki somut yapıları gösterip desteğini almayı umduğum bir kaç arkadaşım var, o aşamadan sonra nasıl bir şey çıkar ortaya emin değilim.
Güzel bir şey olur inşallah :)
Alıntı yapılan: Elektroemre - 12 Kasım 2012, 12:54:55
İyi dilekleriniz için teşekkür ederim arkadaşlar.
@mert07 hocam, şuan herhangi bir compiler (ccs xc8 vs) gibi, pek bir farkı yok, kendine özgü syntax'i olan bir dil.
Elimdeki somut yapıları gösterip desteğini almayı umduğum bir kaç arkadaşım var, o aşamadan sonra nasıl bir şey çıkar ortaya emin değilim.
Güzel bir şey olur inşallah :)
İnşaallah kardeşim hadi bakalım Allah kolaylık versin. Türk işi bir ıde miz olsun. :)
https://www.coursera.org/course/compilers (https://www.coursera.org/course/compilers)
kardesımızı helal olsun buraya kadar gelmek her babayıgıdın harcı degıl
Selam,
Yıllar önce c ve sistem Programcıları Derneğinde böyle bir çalışma Kaan Aslan tarafından başlatılmıştı. Bir ekip kurulmuştu. Bence kaan aslan ile görüşmeniz size katkı ve rota anlamında fayda sağlar. Kendisi Turkiyede suan sayılı kişilerden birisidir ve eğitmen olmasıda iletişimi kolaylaştırır. Ortaya çok daha pro birşey çıkması adına bu kanalı deneyin derim.
Esen kalın.
@Elektroemregünümüzde Proje Ne durumda ?
http://youtu.be/OA2DbuoVcMU (http://youtu.be/OA2DbuoVcMU)
güzel olmuş elinize sağlık.bence bu şekilde havada kalmamalı.bunu mikrodenetleyici ile birleştirip endüstriyel ortamda kullanılabilecek bir cihaz haline getirebilirisiniz.şöyle düşünün türkçe komutlarla programlanbilen bir kontrol kartı.
4 yıla yakın olmuş :)
O dönemde tam anlamı ile işe bodoslama dalıp sıfırdan bir şeyler yazmaya çalışmıştım. Bir çok şey öğrenip çokta keyif almıştım.
Şuanki bakış açımla bir kaç söylecek olursak;
Bu işe ciddi anlamda girişilecek ise önce mevcut metodolojiler incelenmeli.
Sonuçta programlama dillerinin icadından beri temel kurallar oturmuş, standart toollar oluşmuş.
"Compiler compiler" denilen toollar (derleyici yazmanızı kolaylaştıran derleyiciler) sizi bir çok yükten kurtarıyor. Yacc, bison vb. popüler olanları.
Ben kişisel olarak Coco/R sevdim. http://www.ssw.uni-linz.ac.at/Coco/ (http://www.ssw.uni-linz.ac.at/Coco/)
Bu tool'a oluşturmak istediğiniz dilin kurallarını içeren bir dosya veriyorsunuz (tabi ekstra detayları var) ve sizin için Lexer ve Parser kısmını otomatik oluşturuyor. Örnekleri arasında "taste" isminde uydurulmuş basit bir dil örneği var. Örnekte kaynak kodları AST (abstract syntax tree) ye dönüştürülüyor.
Bu aşamadan sonra optimizasyon sıkıntı değilse, birden fazla hedef mimariniz yok ise, tek model bir MCU için, basit komutları olan bir dili ayrıştırıp AST'den direkt hedef mimari asm kodlarını üreten basit bir derleyici yazmak en fazla 1 haftanızı alır. Fakat profesyonel bir şey isterseniz iş karmaşıklaşıyor, katman sayısı artmak zorunda ve bu iş aylar sürebilir. Optimizasyon, birden fazla hedef mimari desteklenmesi ve kullanıcının işini kolaylaştıracak dahili kütüphaneler hazırlama, binlerce bug ile baş etme vb ise işi ayrı bir boyuta taşıyor. Pazarlama ve müşteri desteği ise daha da başka bir boyutu.
Emre bey konuyu yakından takip ediyorum.
Lakin sizin kadar profesyonel değilim kullandıgınız bazı kelimeleri anlayamadım mesela Lexer ve Parser gibi.
Ben atmelin bir işlemcisini 89c51 için hex üretmek istoyurm bunu bu dediğinizle yapma şansımız varmı yoksa... C dilini asm yemi çeviriyor sadece
Alıntı yapılan: Elektroemre - 18 Nisan 2016, 01:35:19
4 yıla yakın olmuş :)
O dönemde tam anlamı ile işe bodoslama dalıp sıfırdan bir şeyler yazmaya çalışmıştım. Bir çok şey öğrenip çokta keyif almıştım.
Şuanki bakış açımla bir kaç söylecek olursak;
Bu işe ciddi anlamda girişilecek ise önce mevcut metodolojiler incelenmeli.
Sonuçta programlama dillerinin icadından beri temel kurallar oturmuş, standart toollar oluşmuş.
"Compiler compiler" denilen toollar (derleyici yazmanızı kolaylaştıran derleyiciler) sizi bir çok yükten kurtarıyor. Yacc, bison vb. popüler olanları.
Ben kişisel olarak Coco/R sevdim. http://www.ssw.uni-linz.ac.at/Coco/ (http://www.ssw.uni-linz.ac.at/Coco/)
Bu tool'a oluşturmak istediğiniz dilin kurallarını içeren bir dosya veriyorsunuz (tabi ekstra detayları var) ve sizin için Lexer ve Parser kısmını otomatik oluşturuyor. Örnekleri arasında "taste" isminde uydurulmuş basit bir dil örneği var. Örnekte kaynak kodları AST (abstract syntax tree) ye dönüştürülüyor.
Bu aşamadan sonra optimizasyon sıkıntı değilse, birden fazla hedef mimariniz yok ise, tek model bir MCU için, basit komutları olan bir dili ayrıştırıp AST'den direkt hedef mimari asm kodlarını üreten basit bir derleyici yazmak en fazla 1 haftanızı alır. Fakat profesyonel bir şey isterseniz iş karmaşıklaşıyor, katman sayısı artmak zorunda ve bu iş aylar sürebilir. Optimizasyon, birden fazla hedef mimari desteklenmesi ve kullanıcının işini kolaylaştıracak dahili kütüphaneler hazırlama, binlerce bug ile baş etme vb ise işi ayrı bir boyuta taşıyor. Pazarlama ve müşteri desteği ise daha da başka bir boyutu.
Hocam bende aynı şekilde sadece tek bir mikrodenetleyici için (16F628 veya 16f84a) bir compiler yapmak istiyorum teorik derslerin çoğunu dinledim hatta LLVM falan diye bir infrastructure ile karşılaştım. Sizin öneriniz nedir ne ile yapmamız nasıl başlamamız gerekiyor? Elinizde hiç örnek var mı acaba?