Keil de verdigim 5 C satirini derleyecek hayirsever varmi?

Başlatan bunalmis, 19 Şubat 2011, 23:29:24

z

#15
ASD EQU   1

ardindan

LDR R0,[R1,#ASD] gibi kod yazarsam hic sorun yok.

-------------

Fakat

VarY   EQU VarX - 0x20000000   

        AREA    BENIM, READWRITE, ALIGN=3

VarX   DCD 0x17
   DCD VarX
   DCD . - VarX
   DCD VarY   

LDR R0,[R1,#VarY] gibi kod yazarsam bu satir derlenmiyor hata aliyorum.

Gene de su ana kadar daha once hic gormedigim  DCD .-VarX gibi yazim sekillerinin derleyici tarafindan kabul gormesi belki isime yarayacak bir seyler bulmama yarar.

EQU directifi  ARM assemblerda zaten varda sorun EQU nun sagina yazilacak sayisal deger yerine variable adresi koyacak directifin olmayisi.

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

fatihkuzucu

Virtualbox kurup üzerine xp kurun. Orada programları crackli kullanın. Çok önemli ise taşınabilir kücük bir ( mesela 32gb ) ssd hdd kullanın. Böylece hiç bir  güvenlik sorununa maruz kalacagınızı düşünmüyorum.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

z

ADR isime yaramiyor cunku bu pseudo kodda var adresinin Register icerisine dolayli yollardan (PC +/- N gibi bir degerin) atilmasini sagliyor.
Ustelik bu kodla atilmak istenen labelin code segmentte daha dogrusu kodun kostugu segmentte olmasi gerekiyor. Bu kod ile ornegin ramdaki bir labele ulasamiyorsunuz.

Neyse su durumda yapilacak 4 sey var.

1. C ile devam etmek
2. Degisken isimlerini bir kenara birakip degisken adresleri ile devam edip kisa kodlama yapmak
3. Degisken isimlerini kullanarak uzun kodlama yapmak
4. Precompiler yazmak.

Ben 4. secenek icin Delphi ile bu precompileri yazacagim. Programi da burda da paylasirim.

Yalniz yazilan kodlari derlemek icin once bir ikonu tiklamak ardindan da Kei'le tamam oncu derleme islemi bitti sira sende demek gerekecek.

Ileride bir gun Keilin hazir cozumu olursa ona gecerim.

Mimari degisti diye aliskanliklardan vazgecmek gercekten cok zor fakat hakli oldugumu da biliyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

Keil' de pre ve post operations olması lazım. Delphi'de konsol modunda bir programcık yazabilirsiniz. Arayüze gerek yok. Programa parametre geçişi olacaksa komut satırı üzerinden aktarılabilir.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

Yazacagim precompiler ciddiye alinacak bir sey degil ama cok faydali olacak.

Data segmentlerde  dcb,dcw, ve dcd ile tanimlanmis olan degiskenlerin adlarinin sonuna _ getirerek ikinci bir degisken ismi gurbu olusturacak ve bunlara equ ile sayisal degerler atayacak.  Equ sonuna gelecek sayisal veriyi ise 0 dan baslayip bir onceki dcx directifinin tarif ettigi uzunluk kadar ilerletecek.

Burada dikkat etmem gereken tek nokta birbirini izleyen farkli tipteki degiskenlerde adres hizalamasini aynen keil gibi ele almak. Bu da  cok zor bir islem degil.

Equ larla tarif edilen 2.degisken isimlerini alt alta yazip bunlari da ornegin preasm.s gibi dosyaya yazdiracagim. Orjinal asm dosya ise preasm.s dosyasini include edecek.

Boylece keil derleme yapacagi zaman adreslerin sayisal degerleri ile karsilasacak ve hata vermeyecek. Ote yandan source koda bakinca da var1_ gibi bir sey gorunce  zihnimde kolayca canlandirabilecegim.

Kisacasi precompiler keil compilerin yaninda pire kadar bir sey olacak.

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

z

Yurtdisinda arm asm konusunda binlerce euroluk kurslar duzenleniyor, birileri Arm asm uzerine kitaplar yaziyor birileri bunlari aliyor. Yani birileri bunlari ogrenmek icin ugrasiyor ve bu yolda paralar oduyor.  Ben de onlardan birisiyim.

Hayatta zevk aldigim uc bes tane sey varsa  Asm de bunlardan birisi.

Kodlarimi carcabuk yazayim, kodlarim tasinabilsin, anlasilir olsun seklinde zerre kaygim yok.

Yasam bicimi, ask, sevgi, yada hoby diyelim gecelim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fatihkuzucu

İşin avantajı dezavantajına hiç girmiyorum. Yaşlılığın verdigi bir ögrenmeme isteksizliği açısından bakmak gerek. Hiç C dende asm kadar zevk alabileceginizi hesaba katmadan, gereksiz hamallıklarla ugrasıyorsunuz. Para kazanmasanızda, tonla boş zamanınız olsada, en değerli olan zaman sermayesini böyle rahat harcamanız yanlış. C ile devam etseniz cıkarabileceginiz proje sayısına bakıp, asm ile yapabileceginiz bir takım önemli ama cok az olacak işleri tartmak gerek.  "Sizin ulu amaçlarınıza" göre yapılabilecek cok iş varken gidip zamanızı kötü değerlendirmeniz, buna saygı duymayı engeller, bence...
Ama ne isterseniz yaaprsınız orası sizi baglar tabi, kimse birşey diyemez.
Exp.Kits http://tinyurl.com/3qhs8pm   Küçük adamların, küçük fikirleri... Büyük adamların, büyük hayalleri...

z

#22
@Fatihkuzucu

Bes on tane google penceresi acip iclerine assembler, assembly language, arm assembler seklinde sonu assembler ile biten cumleler yazarsan karsina binlerce sayfa gelir. Bu sayfalardan sayisiz dokumana, programa, kitaba ulasabilirsin. Bunlari okuyup kavramaya ne bilgin ne de omrun yeter. (Hepimiz icin gecerli)

Tum bu bilgiler laf olsun diye yada birileri hobysel ugraslar edinsin diye uretilmiyor.

Meslek sahipleri, mesleklerini icra ederek topluma katkida bulunurlar. Assembly konusunda gorev alanlar da ayni sekilde topluma katkida bulunurlar. Gunumuzde hala lambali devre tasarimi yapan kisiler de insanliga katkida bulunmaya devam ederlerken konuya cok yuzeysel bakmissin.

Istersen asm ile ugrasanlari bu toplumdan aforoz edelim hatta taslayalim yada yakalim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#23
Bahsettigim precompileri yazdim. Indirmek icin Tiklayin.

Startup.s dosyasi icinde asm program yazacagimizi varsayarsak;

Data segment icinde asagidaki gibi degiskenlerimizi tanimliyoruz.

  AREA  MyVar, READWRITE, ALIGN=3
Var0	DCD 0
Var1	DCD 0
Var2	DCD 0
Var3	DCD 0

  INCLUDE Variables.s


Code segment icine de ornegin asagidaki gibi toplama programini kodluyoruz. Asm kodlarda degisken ismi kullanmak gerektiginde tanimladigimiz degiskenin isminin sonuna fazladan bir alt cozgi koyuyoruz. (Fakat bunu ramdaki ilk degisken adresini yuklerken (Base Address) yapmiyoruz.)

Program 32 bitlik Var3 = Var1 + Var2 islemini yapiyor.

  LDR 	R0,=Var0
  LDRD	R1,R2,[R0,#Var1_]
  ADD 	R1,R2
  STR 	R1,[R0,#Var3_]


Boylece Keil'de asm kodlarin icinde hem degisken isimleri kullanabiliyor hem de kodlari optimize sekilde yazabiliyorsunuz.

Keil, asm direktiflerine yeni bir eklenti yapana kadar bu cozum olacak. Belki de burnumuzun onunde cozum var fakat biz bilmiyoruz.

Kullanim sekli;

1) Asm dosyanizda data segmente degisiklikler yaptiysaniz  asm dosyanizi save ediyor ve ardindan Precompile.exe yi calistirip, Precompile tusuna bastigimizda Variables.s dosyasi uretiliyor. Keil, kendi disinda yapilan bu degisikligi farkedip sizi uyariyor.

2) On derleme isi bittigi icin artik Keil'de bildigimiz sekilde derleme islemini yapiyoruz.

Eger  degisken tanimlarinda degisiklik yapmadan sadece asm kodlar uzerinde oynuyorsaniz Precompile.exe yi tekrar tekrar calistirmaniza gerek yoktur.




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