Das raffinierte dabei ist, dass das zero-flag gesetzt wird, sobald der Register bei einer Operation Null wird. Das passiert automatisch und kostet keinen Befehl Microcode. Darüber hinaus gibt es kaum einen Befehl mit kürzerem Microcode, als JZ (Springe, wenn Zero-Flag gesetzt ist).
Man nutzt hier sozuzagen die Tatsache aus, dass verschiedene Befehle innerhalb der CPU unterschiedlich schnell verarbeitet werden.
Bei einem Vergleich von zwei Konstanten müsste die zweite erst in ein zweites Register geladen werden, und dann ein JE (Springe, wenn Register gleich) ausgeführt werden. Der JE macht im Microcode auch nix anderes, als die zweite von der ersten abzuziehen und ist genauso umfangreich wie die beiden Befehle im ersten Fall (
DEC und JZ). Hierzu kommt dann noch bei jedem Case das Laden der Vergleichskonstante.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>