Bernd schrieb:
> Dankeschön! Mit einer Schleife und nop gehts jetzt.
>
>
1 | > for (i=0;i<10;i++) {
|
2 | > asm volatile ("nop");
|
3 | > }
|
4 | >
|
>
wobei man hier sagen muss, dass du dir das Assembler Ergebnis ansehen
musst.
Denn du hast hier den Fall, dass die Schleifensteuerung vom Prinzip her
mehr Zeit braucht, als der NOP.
Mit einer Ausnahme: Wenn der Optimizer Loop-Unrolling macht, dann fällt
die Schleifensteuerung weg und im Code tauchen nur noch 10 NOP
hintereinander auf.
D.h. du bist hier in der unglücklichen Situation, dass du extrem vom
Compiler abhängig bist, welchen Zeitbedarf das Konstrukt tatsächlich
hat. Eine gewisse Mindestzeit ist garantiert (denn einfach komplett
wegoptimieren kann der Compiler das Konstrukt nicht). Aber je nach
Compilereinstellung kann sich der Zeitbedarf gut und gerne auch
mindestens verdreifachen (ich schätze das jetzt mal). Wenn das in deiner
Anwendung kein Problem ist - gut. Wenn das ein Problem darstellt, bist
du besser beraten, das Loop-Unrolling selbst zu machen und dann eine
genau definierte Zeitspanne zu haben.