BASIC kullanıcılarını C'ye alıştırma turları

Başlatan bunalmis, 28 Ekim 2011, 18:48:32

ilhan_mkp

hocan ben farkettim ki basicle işlemciyi tanımaktan kaçıyormuşum oysa basic kütüphaneleri kullanmadığımız kodlarla dolu dün bascom avr nin lcd kütüphanesinin kaynak koduna baktım ben çeyreğini bile kullanmıyorum

sanırım birde programlama mantığımızda sorun varmış register programlama dediğiniz olay zor ama alişabilirsek iyi bir yöntem 

derslere gelirsek anlatımlar çok güzel

c nin devamında birazda program kurguları üzerine taktikler verirseniz ve hala arm ile işe yarar bir ürün yapamadıysam sorun sizde değil bendedir ;D

z

Alıntı yapılan: ilhan_mkp - 31 Ekim 2011, 19:23:15
hocan ben farkettim ki basicle işlemciyi tanımaktan kaçıyormuşum oysa basic kütüphaneleri kullanmadığımız kodlarla dolu dün bascom avr nin lcd kütüphanesinin kaynak koduna baktım ben çeyreğini bile kullanmıyorum

sanırım birde programlama mantığımızda sorun varmış register programlama dediğiniz olay zor ama alişabilirsek iyi bir yöntem 

derslere gelirsek anlatımlar çok güzel

c nin devamında birazda program kurguları üzerine taktikler verirseniz ve hala arm ile işe yarar bir ürün yapamadıysam sorun sizde değil bendedir ;D

Yalnız bir konuda yanlış anlaşılmak istemem.

ARM gibi gizemli  bir işlemci, biraz olsun yakından tanınsın istedim.

Yoksa bu işelmciye paldır küldür program yazmak da mümkün. Yani registerlere hiç ama hiç bulaşmadan C de kod da yazabiliriz.

Ben o konuya girmeyeceğim  fakat anlatımı ileride birileri devralabilir.

Register programlamaya girme sebebim donanımda neler var bilinsin adınaydı.

ARM'ı diğerlerinden farklı ve üstün kılan nedir sorusunun cevabı ancak işlemci ve çevrebirimleri anlaşılırsa anlaşılabilir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ilhan_mkp

hocam yanlış anlaşılan bir durum yok evet paldırt diye kodu yazardık öyle yapsaydınız ben bunun mimarisi nasıl bişimiş diye bakmazdım hex sistemden öcü diye kaçardım bu arada 32bit hesaplayıcı windowsun hesap makinasından daha pratik onun içinde teşekkürler

DumrulBey

Alıntı yapılan: bunalmis - 31 Ekim 2011, 19:04:03
Aslında bu tip sorular bizi amacımızdan saptırır.

Bir işlemcinin C ye uyumlu komut kümesinin olması ne kadar doğru bir tabir tartışılır. C'deki While, for gibi komutların arka planında koşacak makine kodlarının daha kolay ve daha optimize yazılmasına yarayan ve bu amacla olusturulmus komut seti, sadece C de değil, Basic'de de ASM'de de çok işe yarar.

Örneğin ARM'ın CBNZ yani Compare and Jump Not Zero makine komutu, C deki While yada For tipi komutlar için olduğu kadar Basic ve ASM için de biçilmiş kaftandır.

Basic derleyici yazanlar bu komutları kullanarak Basic'in while ve for döngülerini daha optimize  hale getirecek kodlar ürettirebilir.

ARM CM3, CM4 vs işlemcilerin komut seti ARM sitesinde mevcut.
Sitesinde Thumb diye bir şeyden bahsedildiğini gördüm. Kodlara baktım da bununla oluşacak object code çok başarılı olacaktır: http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf

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

eistain_54

hocam benim anlamadığım pointerler unionlar çok fazla anlamadığım konular bir değişkenin tipini zaten biliyorken neden pointerlere ihtiyacımız var? Sonuçta bir değişkene değer verirken aslında değişkenin adresine erişmiş oluyoruz neden ?
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

z

#65
Pointer kullanmadan da karşılaşılan sorunları çözebilirsin. Fakat bu çözümler dolaylı dolayısı ile de zaman alıcı olur.

Yukarıdaki Pointer yazısı bittiğinde daha iyi anlayacaksın.

Not: Yazıyı tamamladım. Sorun hala devam ediyormu?

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

muhittin_kaplan

Aslında Bir Kısıtlamadan Kaynaklı Bir Çözüm Yaratmış Pointer.
Fonksiyonun Sadece bir değer Döndürmesi bir kısıtlama. Bunu Pointer kullanarak Değişkeni değilde Değişken Adresini Kullanarak Aşıyoruz.
Peki Değişkenler RAM de belli bir yer tutar Tanımlanan Pointer ların böyle bir durumu varmı ?

ilhan_mkp

doğru anladımmı bilmiyorum ama fonksiyondan dört defa sonuç istemek yerine bir defeda işin içinden çkmış oluyoruzdoğrumudur ?

ilhan_mkp

değişkenlerin olduğu örnkte örneğin a1 önce s1 yazıldı oradan a1 e yazıldı

pointerli örnekte direkt a1 =s1 oldu

muhittin_kaplan

Alıntı yapılan: gerbay - 31 Ekim 2011, 22:30:32
pointer lar platform kaç bitlik ise o kadar uzunlukta yer tutarlar. burada 32-bit = 4 byte yer tutuyor.. 1 byte lık bir karaktere pointer bile 4 byte tutar ama bu sizi şaşırtmasın. pointer çok ama çok faydalıdır
Elimdeki Silah Ne kadar Çoksa O kadar iyi Savaşırım.

isikyasar

önerebileceğiniz proton+ gibi C dili kitabı varmı.
teşekkürler.


eistain_54

O zaman şöyle diyebilirmiyiz? Biz değer değer döndürmek istediğimiz bir fonksiyon yazıyoruz. Burda bir kaç değişken oluşturuyoruz. Ancak istiyoruz ki hem o değişkenler kalıcı olmasın (çünkü fonksiyonun başında void olursa değer döndürmüyor ve burada tanımlanan değişken geçici oluyor) hemde fonksiyon değer döndürmesin bu yüzden void fonks () gibi bir tanım yapıyoruz ve değişkenleri tanımlarken *p gibi bir ifadeyle değişkenin olduğu adrese erişip orda isim saklamak yerine direk değeri tutuyoruz. Halen nden buna ihtiyaç duyacağımı anlamadım. Ama bu yarının kullanımını anladım sanki...
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

mozkan87

*p ile değişkenin içeriğine erişiriz. Yani ister yazarız ister okuruz.

z

#74
Alıntı yapılan: ilhan_mkp - 31 Ekim 2011, 23:11:29
değişkenlerin olduğu örnkte örneğin a1 önce s1 yazıldı oradan a1 e yazıldı

pointerli örnekte direkt a1 =s1 oldu


Pointerli örnekte hiç bir ara atama yapılmadan direk a1=a+b; oldu. Bu ayrıntı çok önemli. !!! Pointerin güzelliği burda zaten. !!!

*s1=a+b; demek s1 de saklı olan adrese yani Ramın s1 gözüne a+b sonucunu yaz demek. s1 içine mainde &a1 yazmıştık.

void MyFunc(int a, int b, int*s1, int*s2, int*s3, int*s4)
   {
      *s1=a+b;
      *s2=a-b;
      *s3=a*b;
      *s4=a/b; 
   }
Bana e^st de diyebilirsiniz.   www.cncdesigner.com