Gast
#2978579
Hallo Forum, ich versuche gerade zu verstehen warum der compilierte Code meines Compilers funktioniert. (Warum? Debugging, irgendwo ist ein Wurm drin) Wenn ich 2 16-Bit-Werte auf Gleichheit vergleichen möchte dann macht mein Compiler genau das was hier steht: http://www.avr-roboter.de/controller/befehle/beschreibung/c.html#cpc
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
kleines Gedankenexperiment: R3:R2 = 258 = 0b100000010 => r2 = 2; r3 = 1 R1:R0 = 257 = 0b100000001 => r0 = 1; r1 = 1 dann rechnet er also: r2 - r0 = 1 => Carry- und Zero-Flags gelöscht weiter: r3 - r1 - Carry = 0 => Carry-Flag gelöscht, Zero-Flag gesetzt. "brne" sieht ein gesetztes Zero-Flag und verzweigt nicht, obwohl es sollte?! Wo mach ich den Fehler? Ich sitzte jetzt geschlagene 2 Stunden vor dem Problem aber ich komme nicht drauf! Könnt ihr mir helfen?