c kodunun çevrim toplam süresini gösteren kolay yol varmÄ

Başlatan mcan, 23 Eylül 2006, 12:02:14

mcan

if(x)y++;else y--;
gibi yazdığımız kodun tamamı yada bir bölümünün donanım tarafından kaç çevrimde işlendiğini gösteren bir yazılım bir derleyici ve bunun gibi yararlı olabilecek bir şeyler varmı? örnek;
if (t1_overflow)//true=2,false=3                   //----|
   {t1_overflow=0;freqc_high++;}//6 çevrim         //    |
else                                               //    |-- 8 çevrim    
    {delay_cycles(5);}                             //----|

birkan

Hi-Tech C de bunu yapmanın en pratik yolu oluşan asm dosyasına bakarak hesaplamaktır. Direkt c kodlarına bakarak bunu yapma imkanı sanırım yoktur. if'e şart olarak yazdığın değişkenlerin tipine bağlı olarak işlem zamanı çok değişik olabilir.

mcan

Htec derleyici olması şart değil,herhangi bi 8bitlik pic için c derleyicisi için soruyorum aslında.Asm dosyasından bakmak için önce derlemek gerekiyor(sanırım) eğer derlemeden görülemiyorsa zaten işime pek yaramıyor ben c dilinde kodu yazarken yani programı daha oluştururken kaç çevrim süreceğini merak ediyorum,yanlış olmasın yorumlayıcı gibi bişey c kodunu okuyup adım adım makie diline çevrirecek ve kaç çevrim olduğunu söyleyecek gibi...

gsever

MPLAB'da projeyi MPLAB SIM ile debug ettiğinde "debug" menüsü altında "StopWatch" aracı var. Bununla kodun zamanlamasını ölçebilirsin.

Subzero

MPLAB bi çözüm olabilir bilemiyorum,
ama genelde yapılan şudur; C dosyasında bir asm blok yazılır.
mesela : _asm nop nop nop _endasm gibi...
bunun 5 cycle olduğu bilindiği için,
bu blok bir for döngüsü ile çevrilir, for değişkeni sayesinde istenen
gecikme yapılır.
Ama çok hassas istiyosan biraz daha uğraşmak lazım,
c kodu ile yazuılan kısmı da incelemek gerek.
Ama belki MPLABden bakılıyordur, ben de bi deneyeyim.