/i/Yazılım

Umuyoruz ki geleceğin yazılımcıları bu altinciden çıkacak!
  1. 1.
    +21 -5
    Biliyorsunuz ki AVR mikrodenetleyiciler Harvard mimarisini temel alıyor, yani programın çalıştığı bellek ile değişkenlerin tutulduğu bellek farklı. Bu yüzden SD kart gibi dış bir ortamdan program çalıştırılamıyor. bootloader çözümleriyle program belleğine HEX dosyası yazılabilse bile benim yaptığım sistem kadar özgür değil ve yüklenebilecek dosyanın boyutu program belleğiyle kısıtlı.

    Ben ise AVR mikrodenetleyiciler için basit bir bytecode interpreted dil geliştiriyorum. Java ve .NET dillerinin çalışma mantığıyla aynı yani.

    Bytecode interpreted dillerin Python gibi interpreted dillerden farkı ise yazılmış kodun doğrudan interpreter tarafından okutulmaması, bunun yerine bir derleyici tarafından bytecode'a (sanal makinenin anlayacağı özel bir tür makine dili) derlenmesi ve runtime esnasında bir sanal makine vasıtasıyla çalıştırıldığı işlemcinin makine dili komutlarına dönüştürülerek uygulanmasıdır. Dolayısıyla normal interpreted dillerden daha az yer kaplar ve daha performanslıdır.

    SD karttan, RAM'den hatta belki program belleğinden yüklenecek bir dosyayı yazdığım sanal makine ile yorumlayıp anlık olarak çalıştıracak. Bu sayede çalıştırılacak dosya boyutunun herhangi bir bir sınırı olmayacak.

    Dahası istenilen dilden benim bytecode dilime dönüşüm yapacak basit bir derleyici yazılabilir, bu sayede teorik olarak her dil ile AVR'lara program yazılabilir.

    Dilin adı UBL. Şimdilik yalnızca basit bir assembler yazdım, bytecode komutlarının mnemonic bir karşılığından ibaret yani. Bildiğimiz assembly gibi kısacası.

    Yakında C syntax'ine sahip bir derleyici yazmayı düşünüyorum, bu sayede çok daha kolay bir şekilde bytecode dilime uygun programlar yazılabilir.






    Şimdilik komutlar bunlar. AVR portlarına doğrudan erişim sağlayacak komutların üzerinde çalışıyorum. Elle tutulur bir hale geldiğinde derleyiciyi ve yorumlayıcıyı (AVR üzerinde çalışacak) paylaşırım.

    Ha unutmadan, AVR mikrodenetleyiciler Arduino tarafından kullanılıyor, yani bu proje Arduino ile %100 uyumlu.






    Son olarak şimdilik sadece 8-bit AVR mikrodenetleyicileri desteklemeyi düşünüyorum, 16 bit ve 32 bit AVR'lar üzerinde pek çalışmadım.

    Desteklerinizi bekliyorum, geliştirilirse çok güzel bir proje ortaya çıkabilir.

    Edit 1: Komut listesini güncelledim, özellikle register ve pin giriş çıkışları için komutlar ekledim. Onun haricinde Assembler'daki bug'ları gidermeye devam ediyorum.

    Edit 2: Assembler ve sanal makine hazır olmak üzere, çarşamba günü Assembler'ı cuma günü ise sanal makineyi paylaşmayı düşünüyorum.

    Edit 3: Bazı sağlık sorunları nedeniyle yayınlanma tarihi gecikecek muhtemelen:
    (bkz: panpalarım gözüm konusunda acil)
    ···
  1. 2.
    +15
    Aynen kardesim
    ···
    1. 1.
      0
      sesli güldüm şuku
      ···
  2. 3.
    +1
    mantıklı gibi
    ···
  3. 4.
    +4 -2
    AKP subliminali var !!!
    ···
  4. 5.
    0
    (bkz: 874 incipuan şerefine)
    ···
  5. 6.
    0
    c değil de
    panpa java seviyesine çıkarakbunu
    herhangi bişe olursa söle sadece
    hatta ima et
    ayarlarız
    ···
    1. 1.
      0
      java seviyesi diye bir şey yok pnp. java görsel bir programlama dili, 8bitte pek bir anlamı olmadığını düşünüyorum. he yapamazmısın yaparsın. ama fazla şişirir diye düşünüyorum.
      ···
      1. 1.
        -8
        Yani yani
        if else olsun diyorum yani
        ···
      2. 2.
        +11
        c de if else yok mu sanki dalyarak cahil zütveren ne dedigini kendi bile anlamiyor
        ···
  6. 7.
    +1
    okur bu çocuk
    ···
  7. 8.
    0
    ben bu işlerden anlamam arduino gibi bir şey geliştireceksen motor sürücüsü'de kart'a dahil olsun harici almayak panpa
    ···
  8. 9.
    +1
    yav burda herşeyi yapabilen insanlar var ama nedense ben bir autocad kullanan adama rastlayamadım amk
    ···
    1. 1.
      0
      yavaş yavaş herşey panpa
      ···
    2. 2.
      +2
      Ulan ben de aha buldum diye sevindim derken yine elim gibimde kaldı
      ···
    3. 3.
      +1
      napacan autocadi söyle amk
      ···
    4. 4.
      +1
      autocad bilince ne olacak çok zor bi program değil lise ve üniversitede aldığım bilgi ile çoğu çizimi yaparım diye düşünüyorum solid daha iyi bence tabi katı modelleme farkı var hemde eğlenceli
      ···
    5. diğerleri 2
  9. 10.
    0
    anlayamadığım kadarıyla sınırsız hafıza kartı yapıcaksın
    ···
  10. 11.
    0
    sizi r&d kısmımıza alalım *
    ···
  11. 12.
    0
    Aynen öyle knk
    ···
  12. 13.
    0
    biz de anca "bEylER oYun yaBdıM DeSTk Ltfen" diye dolaşalım amk

    edit: githubdan kaynak falan paylaşsana panpa destek gelir muhakkaka
    ···
  13. 14.
    +2
    o değilde, direktifleri türkçe yapsaydın şekil olurdu kardeşim * Hatta multi direktif yap ingilizcede olsun
    ···
    1. 1.
      0
      Bu tarz komutların birçoğunun doğrudan Türkçe karşılığı yok, zorlama karşılıklar bulunabiliyor ama o da hoş durmuyor, o yüzden ingilizce yaptım komutları.
      ···
    2. 2.
      0
      Türkçe den kastım Türkçe özel kelimeler değilde, ADD argumanı yerine EKLE argumanı
      DELETE argumanı yerine SIL argumanı, çişğü harflerinin olmadığı sadece latin harflerden oluşan bir argumanda olabilir.

      Bu arada ingilizce mutlaka yazılım programlamada olmazsa olmazdır zaten.
      ···
    3. 3.
      0
      Panpa basit komutlarda sorun yok fakat daha karmaşık isimli komutlara düzgün karşılık bulunamıyor. Mesela JAES komutu için (Jump If Above or Equal [Signed]) tam anlamıyla uygun bir çeviri yapılamıyor. Direkt çevrilirse "Yukarısında veya Eşitse Zıpla (imzalı)" çıkıyor ki mantıksız. Biraz daha düzgün çevrilirse "Büyük veya Eşitse Atla (işaretli)" oluyor, fakat hem zaten Assembly bilenler için hem de yazma zorluğu açısından JAES kullanmak BEAi / BEAI kullanmaktan daha kolay oluyor.
      ···
    4. diğerleri 1
  14. 15.
    0
    tamam inandık.
    ···
  15. 16.
    0
    HTML CSS C++ Java kodlama dilleri varken neden senin gibtiri taktan dilini kullanayım?
    ···
    1. 1.
      0
      Öncelikle; HTML, CSS veya Java (gerçi JVM'nin çok hafif bir versiyonu port edilirse yazılabilir) ile AVR'lara veya Arduino'ya program yazabilirsen tebrik ederim.

      ikinci olarak yukarıda bahsettiğim gibi bu dil bilgisayarda programlama için değil, AVR'ların ve Arduino'nun program belleği kısıtlarını aşmak, bir de AVR'lar veya Arduino üzerinde SD kart gibi dış ortamlardan da doğrudan program çalıştırabilmek için, sen çok yanlış gelmişsin.
      ···
      1. 1.
        0
        panpa üst dil yazılcak bişe olursa söle
        zaten kendinde yazarsında her türlü
        ···
      2. 2.
        0
        Tamam da canım bunu microsoftun c++ kodlama dili de yapıyor bundan bahsetmeye çalışıyorum. C++ çok geniş kapsamlı bir programlama dili.
        ···
      3. 3.
        0
        Panpa tamam da AVR'ların program belleği oldukça kısıtlı. Atmega328p için 32 kb, Atmega2560 içinse 256 kb. Dahası başlıkta bahsettiğim gibi Harvard mimarisinden dolayı başka bir kaynaktan (RAM, SD kart, vs) hiçbir şekilde program çalıştırılamıyor.

        Yani biri SD karttan program çalıştıracak (basit bir 8 bit oyun konsolu bile olabilir bu) bir proje yapmak istediğinde normal yollarla yapması mümkün değil.

        Ha derledikten sonra HEX dosyasını SD karttan okuyarak program belleğine flashlayacak bir bootloader yazılıp halledilmeye çalışılsa da birsürü kısıtlaması var.

        Bootloader çözümünün en büyük sorunu program belleğine yazılma zorunluluğundan ötürü tüm programların AVR'ın program belleğiyle kısıtlı olacak olması. Sadece bu da değil, programın yüklenmesi normal yollardan çok daha uzun. Üstelik programdan programa geçiş sorunlu ve çok uzun sürüyor ki bu da başka bir sorun.

        Bunun için ben de bir bytecode sanal makinesi yazarak bu sorunları çözmeyi amaçlıyorum. Bu sanal makinenin kendi "makine diline" herhangi bir derleyici port edilebilir, bu sayede C++, hatta C# (tabii bunun için bytecode sanal makinemin çok gelişmesi lazım) kullanarak bile limitsiz boyutlarda program çalıştırılabilir.

        Kısacası bu bir programlama bili bile değil, programlama dillerinin üzerine tasarlanması / port edilmesi mümkün olan bir tür "makine dili"...
        ···
      4. 4.
        0
        c++ microsoft'un değil, c# microsoft'un.
        ···
      5. diğerleri 2
    2. 2.
      0
      kardeş ben çok anlamamda arduino gibi bir kart geliştiriyosan motor sürücüsü karta dahil olsun pls
      ···
      1. 1.
        0
        Yok panpa bu AVR'larda veya Arduino'larda SD karttan program çalıştırabilmek veya herhangi bir dili port edebilmek için yaptığım bir bytecode dil şeysi.
        ···
  16. 17.
    0
    tebrikler dostum şukunu verdim böyle başlıkları görmek beni mutlu ediyor.. devam
    ···
  17. 18.
    0
    Turkcemizi bozmaya calisiyoe cugulayin sunu(!)
    Edit: Ugrasmissin emegine saglik tebrikler.
    ···
  18. 19.
    0
    Yardimci olmak isterim. Birlikte de calisabiliriz.
    ···
  19. 20.
    +1
    panpa sen bize fazlasın harvarda git
    ···