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
1) Welche Optimierungsstufe? 2) Wie sieht der erzeugte Assemblercode aus?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.