Gömülü yazılımda for içinde int/uint8_t

cemalb

Üye
Katılım
9 Eki 2019
Mesajlar
126
Puanları
1
Merhabalar. Mikrodenetleyicler için gömülü yazılım geliştirirken for kullanımında "for(int i=...)" yerine "for(uint8_t i=.....)" şeklinde bir kullanım program hafızada tasarruf sağlar mı sizce? Ben yaklaşık 35 tane for döngüsü kullandığım bir programda int yerine uint8_t kullandığımda program hafızada daha fazla yer kapladığını farkettim. Neden olabilir ?
 
int tanımladığınızda ramde 32bit yer ayrılırken int8 yaptığınızda 8bit yer ayrılır yani tasarruf sağlarsınız.
 
Bende öyle düşünmüştüm ama tüm for'lardaki int leri uint8_t ile değiştirdiğim halde program memory azalması gerekirken arttı. Onu çözemedim.
 
stdint.h da neyi kontrol edeceğim?
 
Evet bellekten tasarruf sağlar. Fakat int yerine uint8_t veya uint16_t kullanılmasının başka getirileri vardır. Açıklaması biraz uzun. O yüzden link veriyorum. Oradan aradığın cevabı bulabilirsin.

http://ozenozkaya.com/blog/?p=186
 
Program hafızasında tasarruf sağlaması mümkün değil.
Kodun saklandığı yer Program hafızası,
değişkenler Ram hafızası denen alanda bulunur.

Ram den tasarruf sağlar mı diye sorulursa:
Mcu 32 bit ise 8 bit değişken kullanmanın bazı durumlarda faydadan çok zararı olur.
Eğer mcunun 8 bit değişkenlerle çalışmak için gerekli komut seti yoksa (mcu tadarımı ile ilgili bir durum)
bu değişkenlerle işlem yapmak için daha fazla adım gerekir çünki
aslında değişken ramde 32 bitlik bir alanda tanımlıdır,
mcu bu 32 bit in kendine lazım olan 8 bitini alıp geri kalanını bozmadan ilem yapmaya çalışırken
and or vs birkaç adım daha harcamak zorunda kalır.
Bu pek olacak bir durum değil,
genelde mcu 32 bit olsada 8 bit işlemler için komutları bulunur.
Bunun yanında derleyicide güzel tasarlanmışsa bu işe el atar.

Bunların dışında:
her for döngüsü için
for(uint8_t i=.....)"
şeklinde değişken kullanımı gereksiz,
for ların dışında bir tane "i" tanımlayıp
bütün for döngüleri için aynı değişeni kullanabilirsin.

Daha doğru yorum yapabilmek için kullanılan mcu ve ide derleyici nedir bilmek ona göre incelemek lazım.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…