MSP-GCC und Zeitschleifen

Gast #24607
Hallo,

habe mit folgendem Codefragment ein Problem:

for(j=0;j<6000;j++) _asm_ __volatile__("; loop");

Also eine Schleife um ein wenig Zeit zu schinden. Habe mich auch an die 
Dokumentation gehalten mit __asm.... Allerdings funktoniert die Schleife 
nicht. Es läuft zu schnell. Als Referenz nutze ich den IAR Compiler (4kB 
Version). Dort funktionierts. Irgendwelche Ideen?

Thomas Fuchs
Gast #24609
Wie stelle ich die Optimierungsstufe den ein?
Bei der Anleitung zum MSPGCC habe ich keine möglichkeit gefunden.

Der Assemblercode ist wie folgt:
  for(j=0;j<18000;j++) _asm_ __volatile__("; loop");
   c13e:  0f 43         clr  r15       ;
   c140:  3f 50 19 00   add  #25,  r15  ;#0x0019
   c144:  3f 90 50 46   cmp  #18000,  r15  ;#0x4650
   c148:  fb 2b         jnc  $-8          ;abs 0xc140

Der Code sieht eigentlich OK aus. Der richtige Wert wird geladen (Hex 
Zahl). Ich habe allerdings keine Ahnung wieso zum r15 eine 0x19 addiert 
wird. Wird aber auch keinen grossen Unterschied für meine 
Zeitverzögerung machen.

Müsste mal den Assemblercode vom IAR nehmen und vergleichen. Habe dazu 
aber noch keine Zeit gefunden.

Thomas

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.