Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trAmigaAmiga YazılımAmiga çapraz derleme için kapsamlı {ve ücretsiz} IDE.
Sayfa: [1] 2 3   Aşağı git
Yazdır
Gönderen Konu: Amiga çapraz derleme için kapsamlı {ve ücretsiz} IDE.  (Okunma Sayısı 7102 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Alpyre
Uzman
*****
Mesaj Sayısı: 2.215



Üyelik Bilgileri WWW
« : Şubat 25, 2017, 14:20:00 ÖS »

Hatırlarsanız bir süre önce "AmigaOS için güncel çapraz derleme ortamı"nın nasıl kurulacağına dair bir paylaşım yapmıştım (bakim ne kadar olmuş, 5 ay olmuş).
Daha sonra emarti rumuzlu üyemiz pratik katılımsız kurulum hazırlamıştı. Kurmayı düşünüyorsanız tavsiye ederim: Kolay Kurulum Scripti.

Bundan daha önce Simon (Özay Turay)'ın şu yorumu beni biraz düşündürmüştü:
Bir sürü farklı IDE denedikten sonra en sonunda CubicIDE'yi satın aldım, rahatladım ben.Kahkaha
Çok paraymış, PC'de CrossPlatform geliştirsek daha ucuza gelmez mi? Kahkaha

Evet CubicIDE Amiga ortamında geliştiriyorsanız pek çok derde deva oluyor ama şimdi çapraz geliştirme ortamımız var ve orada ihtiyaçları karşılayacak AmigaOS API'sine uygun bir IDE yok (ayrıca genellikle hobi projelerinde kullanmak için satın alacağımız CubicIDE'nin fiyatı da gerçekten yabana atılır değil, hele de TL'nin son değer kayıplarından sonra).
(bakayım ne kadar olmuş hmmm neredeyse 1 yıl olmuş)

Ardından emarti'nin şu mesajı geldi:
...
İlk etapta Amiga fonksiyon sembollerini tanıyan bir IDE edinmen çok daha önemli.
StormV3deki GoldED bu fonksiyonları tanıyıp highlight yapmakta. Popüler IDElerdeki CTRL+SPACE gibi birşey aramıyor değilim elim hep gidiyor ama nafile

Hmm... GoldED'nin de (ki CubicIDE'nin öncüsüdür) karşılayamadığı ihtiyaçlar mevcut. Güncel IDE'ler işi çok pratikleştiren çok güçlü özelliklere sahip (mesela benim favorim auto-complete snippets). Bu yorumdan sonra bu konuda ciddi bir ihtiyaç olduğu fikrim kesinleşti ve konu üzerinde araştırma yapmaya başladım.
(bakim ne kadar olmuş... hmm 6 ay olmuş)

Çözüm yolu ucuz olmalıydı o yüzden ücretsiz IDE'leri araştırmaya başladım ve Atom ile tanıştım. Atom GitHub'ın bizzat kendi metin editörü. Tüm programlama dillerini tanıdığı için çok güçlü bir IDE de aynı zamanda. Git ile entegre olması da bambaşka bir muhteşemlik. Yetmezmiş gibi açık kaynak kodlu ve 3ncü parti eklentileri de destekleyen çok esnek bir yapısı var.

Kararımı verdim. Atom'a AmigaOS API'sini destekleyecek bir paket yazacaktım. Tabi bunu yapmak için JavaScript, CoffeeScript ve regex öğrenmem gerekiyordu. Bunlar çok uzun sürmedi. Bu kadar vakit almasının temel nedeni Atom'un C/C++ gramerinin halihazırda gerçekten çok kötü durumda olmasıydı.

Yazacağım paketin düzgün çalışması için önce Atom'un C gramerini düzeltmem gerekiyordu. Aslında o da çok uzun sürmedi fakat, Atom'un kaynak kod maintainer'ları gerçekten çok yoğun çalışıyorlar ve yaptığım katkıları değerlendirmeleri ve onaylamaları çok uzun sürüyor (yaptığım son rötuşları değerlendirmeyi hala {15 gündür} tamamlayamadılar o nedenle sizlere özel bir gayrı resmi paylaşım yapacağım şimdilik. İlerleyen zamanda tamamı resmi bir Atom paketi olacak).

Bir diğer zaman alıcı şey de API sembollerini toparlamaktı, yani veriyi oluşturmak. AutoDoc yığınlarından 30bin'den fazla makro 2bin'den fazla da fonksiyon tanımlayıcısını eksiksiz toparlamak için özel programcıklar yazmak zorunda kaldım. AutoDoc'lardaki imla hataları da sağ olsunlar bayağı bir başımı ağrıttılar.

Neyse ki sonunda bitirmeyi başardım. Halen regex'lerde bayağı bir optimizasyon yapmam gerekiyor ancak v1.0'a ulaştığımı düşünüyorum.

Paket kurulduğunda CubicIDE'ninkinden çok daha gelişmiş ve güncel bir syntax-highlighting sağlıyor. Örneğin aşağıdaki örnek MUI kodunu nasıl boyadığına bir bakın:


Ayrıca OS3 ve OS4 SDK'sındaki tüm fonksiyonlar (ve ek olarak tüm MUI fonksiyon ve makroları) için auto-complete snippet'ler de sağlıyor. Bir örnek:



Şimdi gelelim kurulum aşamasına:

Biraz zahmetli ama elimden geldiğince kolay anlatmaya çalışacağım:

1) Öncelikle Atom'u kuruyoruz: atom.io/ sitesine gidin, indirip kurun (32bit linux'taysanız işiniz zor, kaynak kodlarından derlemeniz gerekiyor).

NOT: AmigaOS paketim Atom'un 1.14.0 ve üzeri sürümlerinde düzgün çalışıyor, eğer daha eski bir sürüm kullanıyorsanız güncelleme yapmalısınız.

2) Atom için yazdığım düzeltilmiş C/C++ grammer paketini kurun. Bu kurulumu elle yapacağız çünkü Atom maintainer'ları hala yaptığım katkıları review etmeyi bitiremedi. Çok basit, ekteki arşivi indirin ve
- Linux'ta : ~/.atom/packages/
- Windows'ta : C:\Users\{kullanıcı_adı}\.atom\packages\
dizinine açın.

NOT: Düzeltilmiş C/C++ gramerim onaylanıp Atom kaynak kodlarına merge edildiğinde Atom size bir güncelleme bildirecektir. Bu olduğunda bu arşivi açtığınız dizine gidin, language-c klasörünü silin. Atom'u yeniden başlatın ve güncellemeyi yapın.

3) Şimdi de AmigaOS API paketini kuruyoruz. Bu paketi henüz yayınlamadım, çünkü bağımlı olduğu C/C++ grameri özellikleri henüz onaylanmadı. Yayınlanmadığından bunu da elle kuruyoruz:
- https://github.com/alpyre/language-amigaos-c adresine gidin, sağdaki "Clone or download" düğmesine tıklayın ve "Download ZIP" yapın. İnen arşivi, bir önceki arşivi açtığınız aynı dizine açın.

Şimdi Atom'u açabilirsiniz (zaten açıksa yeniden başlatın).

4) GoldED ve CubicIDE'de Amiga'ya özel bir kod katlama özelliği vardır. İki "///" ibaresi arasında kalan kısmı F12 ile katlayabilirsiniz. Atom'da bu özellik olmadığı için bunu sağlayacak bir paket de yazdım. Dilerseniz bunu da bu aşamada kurun.
Neyse ki bunu yayınladım. Yani kurulumu daha kolay olacak. Şöyle ki :

Atom'un File menüsünden Settings (bazı sürümlerde Edit menüsünde Preferences) kısmına geçin. Burada soldaki listeden Install seçin ve arama kısmına "cubic-folds" yazın. Avatarımın göründüğü paketi kurun. Atom yeniden başlayacaktır.

Şimdi hazır buradayken AmigaOS API'nda nelerin highlight edilmesini seçebilmenizi sağlayan ayar sayfasına bir uğrayın. Soldaki listeden Packages'a geçin, language-amigaos-c paketine tıklayın ve sayfanın Settings kısmında gerekli ayarlamaları yapın.

Not: Highlight ile ilgili ayar değişiklikleri Atom'un yeniden başlatılmasını gerektirir.

Umarım bu katkılarım Atom yetkilierince bir an önce onaylanır ve bu paket tüm dünyanın kullanımına açılır. Ve yine umarım ki Amiga için yazılım geliştirme sürecinde bir hızlanma sağlar.

O zamana kadar paketi kullanan arkadaşlardan olumlu olumsuz geri dönüş ve varsa bug raporları bekliyorum.

Haydi tüm ilgilenenlere başarılar ve hayırlı kodlamalar!

* language-c.zip (23.75 KB - Yükleme: 82 kez.)
« Son Düzenleme: Şubat 25, 2017, 20:27:16 ÖS Gönderen: Alpyre » Logged

Alper
AmigaMan
Deneyimli
*****
Mesaj Sayısı: 572



Üyelik Bilgileri
« Yanıtla #1 : Şubat 25, 2017, 14:25:45 ÖS »

Emeğine sağlık
Logged

Amiga ölmedi, efsane uyuyor
Linux Lover
Üye
****
Mesaj Sayısı: 273



Üyelik Bilgileri WWW
« Yanıtla #2 : Şubat 25, 2017, 15:06:33 ÖS »

Çok büyük emek... Başarılar.
Logged

Simon (Özay Turay)
Genel Yönetici
*****
Mesaj Sayısı: 6.077


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #3 : Şubat 25, 2017, 15:57:18 ÖS »

Aşmışsın üstad. Emeğine sağlık.
Logged

http://www.retrodergi.com - http://www.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PSP Slim, Nintendo DS Lite
emarti
Uzman
*****
Mesaj Sayısı: 2.039


Only Amiga Makes It Possible █


Üyelik Bilgileri WWW
« Yanıtla #4 : Şubat 25, 2017, 16:07:45 ÖS »

@Alpyre abi her daim pörrrfekttsiiinnn
Logged

https://github.com/emartisoft My GitHUB | http://csdb.dk/scener/?id=26786 My CSDB

My Retros
     Atari 600XL | 800XL | 1040STFM,
     C128, C64C, C64G, 1541, 1541-II, 1571,
     A500, A600x2 (Furia, Std), A1200x2 (Microbotic, Std)
     ZX Spectrum 48K
emarti
Uzman
*****
Mesaj Sayısı: 2.039


Only Amiga Makes It Possible █


Üyelik Bilgileri WWW
« Yanıtla #5 : Şubat 25, 2017, 17:41:52 ÖS »

@Alpyre abi kurdum & kullanmaya başladım. Eline, emeğine && beynine sağlık.
Logged

https://github.com/emartisoft My GitHUB | http://csdb.dk/scener/?id=26786 My CSDB

My Retros
     Atari 600XL | 800XL | 1040STFM,
     C128, C64C, C64G, 1541, 1541-II, 1571,
     A500, A600x2 (Furia, Std), A1200x2 (Microbotic, Std)
     ZX Spectrum 48K
LW3D
Genel Yönetici
*****
Mesaj Sayısı: 10.102


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #6 : Şubat 25, 2017, 17:45:51 ÖS »

Eline sağlık...Tebrikler.
Logged

blackturk
Uzman
*****
Mesaj Sayısı: 1.001



Üyelik Bilgileri
« Yanıtla #7 : Şubat 25, 2017, 18:20:56 ÖS »


   Çok güzel bir konu açılmış.Teşekkürler Alpyre.

      Amiga C derleyicileri ilgili ilginç bir durum var.Aşağıdaki bir kaç örnek verdim.Acaba sendeki derleyici ile örnek  C source code'unu  derlediğinde Assembly source code nasıl bir sonuç alıyorsun.

Örnek küçük bir fonksiyon strcpy.c

Kod:
char *strcpy(char *dst, const char *src) {
  char *ret = dst;
  while(*dst++=*src++)
    ;
  return ret;
}
 


    Derlemek için "amiga-gcc cross-compiler 3.4.0"  kullandığında , assembly source code aşağıdaki gibi alıyorsun.

Kod:
_strcpy:
        movel sp@(4),a0 ;# dst, dst
        movel sp@(8),a1 ;# src, src
        movel a0,d1     ;# dst, ret
        .even
L2:
        moveb a1@+,d0   ;#, tmp36
        moveb d0,a0@+   ;# tmp36,
        jne L2  ;#
        movel d1,d0     ;# ret, <result>
        rts


     Eğer Derlemek için  gcc-m68k (amiga olmayan için ) 5.4.0  kullandığında , assembly source code aşağıdaki gibi alıyorsun.


Kod:
strcpy:
        move.l %a2,-(%sp)       |,
        move.l 8(%sp),%a0       | dst, dst
        move.l 12(%sp),%a2      | src, src
        move.l %a0,%a1  | dst, ivtmp.12
.L2:
        move.b (%a2)+,%d0       | MEM[base: src_8, offset: 4294967295B], D.1040
        move.b %d0,(%a1)+       | D.1040, MEM[base: _14, offset: 0B]
        jne .L2 |
        move.l %a0,%d0  |,
        move.l (%sp)+,%a2       |,
        rts




    Vbcc  assembler inlines  olarak kullandığında  strcpy() fonksiyonu  Ço kısa mükemmel sonuç alıyorsun.

Kod:
   move.l a0,d0
.l1:
   move.b (a1)+,(a0)+
   bne .l1



     Vbcc içersinde c kodu olarak derlediğinde aşağıdaki gibi acaiyi uzun bir sonuç alıyorsun.     inanılmaz ? C derleyicilerde bir gariplik var.


Kod:
strcpy:
   movem.l a2-a3,-(sp)
   movea.l ($10,sp),a3
   movea.l ($c,sp),a2
   move.l a2,d0
   movea.l a3,a1
   addq.l #1,a3
   movea.l a2,a0
   addq.l #1,a2
   move.b (a1),(a0)
   beq.b .l2
.l1:
   movea.l a3,a1
   addq.l #1,a3
   movea.l a2,a0
   addq.l #1,a2
   move.b (a1),(a0)
   bne.b .l1
.l2:
   movem.l (sp)+,a2-a3
   rts




  Eğer SAS/C 'de   Örnek strcpy()  source code'u derlersek ne oluyor .Buda inanalımaz .Ulan çok uzun bu ne yaaa

Kod:
              SECTION      text,CODE
__code:
@strcopy:
              MOVE.L         A2,-(A7)                 ;2f0a
___strcopy__1:
              MOVE.L         A1,A2                    ;2449
___strcopy__2:
              MOVE.B         (A0)+,D0                 ;1018
              MOVE.B         D0,(A1)+                 ;12c0
              BNE.B          ___strcopy__2            ;66fa
___strcopy__3:
              MOVE.L         A2,D0                    ;200a
___strcopy__4:
              MOVE.L         (A7)+,A2                 ;245f
              RTS                                     ;4e75
__const:
__strings:
              XDEF           @strcopy
              END






   Aynı C strcpy() kaynak kodu  farklı derleyicilerde ,sonuç uzunlukları farklı assembly listesi elde ediyoruz.Bu demektir ki  bu C derleyiclerde kaynak kodları derlendiğinde farklı alan yeri kaplaması gerekyor değil mi ?  Ne diyorsunuz ?  yorumlar arkadaşlar.Alpyre senin compiler ile asembly listesini alabilir misin ? bir görelim.Teşekkürler.



 






Logged

A1200 | APOLLO 1240 32 MB | CNET PCMCIA | SYSINFO SPEED TEST 30 MIPS
SM1,SEGA MEGA CD,SM2,SMS II,Sega Saturn Mod ve AR 4MB,PSX Mod ve Mpeg ,PSX2 ,SNES ,ATARI 800XL,SPECTRUM 128K +2,YAMAHA CX5M MSX,ATARI 520 STFM,1040 STF,C64,C128,1541 II,1571,RAM 1764 ,A500,A500+,A600,A590,IDE68k,2X1084S,1084P
Alpyre
Uzman
*****
Mesaj Sayısı: 2.215



Üyelik Bilgileri WWW
« Yanıtla #8 : Şubat 25, 2017, 20:22:35 ÖS »

Selam blackturk.

Ben Assembly'den hiç anlamıyorum. Bana Japonca'dan farksız geliyor. Ama istediğini yapayım. Benim kullandığım m68k çapraz derleyicisi gcc 2.95.3'dur.

Verdiğin örnek kod assembly'ye aşağıdaki şekilde derlendi:
Kod:
#NO_APP
gcc2_compiled.:
___gnu_compiled_c:
.text
.even
.globl _strcpy
_strcpy:
link a5,#-4
movel a5@(8),a5@(-4)
.even
L3:
movel a5@(8),a0
movel a5@(12),a1
moveb a1@,d0
moveb d0,a0@
addql #1,a5@(12)
addql #1,a5@(8)
tstb d0
jne L5
jra L4
.even
L5:
jra L3
.even
L4:
movel a5@(-4),d1
movel d1,d0
jra L2
.even
L2:
unlk a5
rts
Logged

Alper
Alpyre
Uzman
*****
Mesaj Sayısı: 2.215



Üyelik Bilgileri WWW
« Yanıtla #9 : Şubat 25, 2017, 20:29:07 ÖS »

Ha bu arada cubic-folds paketinin kurulumu kısmında bazı şeyleri yanlış yazmışım, emarti uyardı, şimdi düzelttim.
Logged

Alper
Blasterreal
Deneyimli
*****
Mesaj Sayısı: 754



Üyelik Bilgileri WWW
« Yanıtla #10 : Şubat 25, 2017, 20:55:07 ÖS »

Ben beceremedim cubic-folds diye bir paket bulmuyo



* Screenshot from 2017-02-25 21-54-38.png (94.4 KB, 1366x768 - Görüntüleme: 543 kez.)
Logged

Amiga 1200
ACA 1221 28 MHz 64 MB RAM Maprom
Amiga OS 3.9
------------
Mac Mini 1.42 GHZ 1GB RAM ATİ 9200 32MB 160GB HDD
Morphos 3.9
emarti
Uzman
*****
Mesaj Sayısı: 2.039


Only Amiga Makes It Possible █


Üyelik Bilgileri WWW
« Yanıtla #11 : Şubat 25, 2017, 21:29:46 ÖS »

Ben beceremedim cubic-folds diye bir paket bulmuyo



Abi Install olan yerde aratmalısın, package kısmında değil
Logged

https://github.com/emartisoft My GitHUB | http://csdb.dk/scener/?id=26786 My CSDB

My Retros
     Atari 600XL | 800XL | 1040STFM,
     C128, C64C, C64G, 1541, 1541-II, 1571,
     A500, A600x2 (Furia, Std), A1200x2 (Microbotic, Std)
     ZX Spectrum 48K
emarti
Uzman
*****
Mesaj Sayısı: 2.039


Only Amiga Makes It Possible █


Üyelik Bilgileri WWW
« Yanıtla #12 : Şubat 25, 2017, 21:35:10 ÖS »

Cubic-folds paketi ile kendimi AMOS kullanıyor gibi hissettim.
Logged

https://github.com/emartisoft My GitHUB | http://csdb.dk/scener/?id=26786 My CSDB

My Retros
     Atari 600XL | 800XL | 1040STFM,
     C128, C64C, C64G, 1541, 1541-II, 1571,
     A500, A600x2 (Furia, Std), A1200x2 (Microbotic, Std)
     ZX Spectrum 48K
Blasterreal
Deneyimli
*****
Mesaj Sayısı: 754



Üyelik Bilgileri WWW
« Yanıtla #13 : Şubat 25, 2017, 21:46:29 ÖS »




Şimdi hazır buradayken AmigaOS API'nda nelerin highlight edilmesini seçebilmenizi sağlayan ayar sayfasına bir uğrayın. Soldaki listeden Packages'a geçin, language-amigaos-c paketine tıklayın ve sayfanın Settings kısmında gerekli ayarlamaları yapın.




Bende settting sayfası gelmiyo yukarıdaki resimdeki gibi durum

@emarti teşekkürler
Logged

Amiga 1200
ACA 1221 28 MHz 64 MB RAM Maprom
Amiga OS 3.9
------------
Mac Mini 1.42 GHZ 1GB RAM ATİ 9200 32MB 160GB HDD
Morphos 3.9
Alpyre
Uzman
*****
Mesaj Sayısı: 2.215



Üyelik Bilgileri WWW
« Yanıtla #14 : Şubat 25, 2017, 22:02:10 ÖS »

Bende settting sayfası gelmiyo yukarıdaki resimdeki gibi durum
Aşağıdaki resimdeki yerlere tıklamalısın.

Bu arada çok önemli bir aksilik farkettim!
Arkadaşlar paketin klasör adı language-amigaos-c olmalı!!!
Ekran görüntüsünden gördüğüm kadarıyla GitHub ZIP arşivini oluştururken "-master" eklemiş sonuna! Onu düzeltseniz ve Atom'u yeniden başlatsanız iyi olur. Yoksa paketin yayınlanmasından sonra güncelleme bildirimi alamazsınız!


* index.gif (33.7 KB, 715x566 - Görüntüleme: 557 kez.)
Logged

Alper
Sayfa: [1] 2 3   Yukarı git
Yazdır
Gitmek istediğiniz yer: