Esta línea ...
if (thisWindowsSinceLastFlash <=1 ) {
... cumple con este código ...
11e8: 81 e0 ldi r24, 0x01 ; 1
11ea: 8d 15 cp r24, r13
11ec: 38 f4 brcc .+14 ; 0x11fc
¿Por qué el compilador no utilizó el cpi
de esta manera ...
1204: 01 30 cpi r16, 0x01 ; 1
1206: 39 f4 brcc .+14
y guarde los ciclos y el espacio y el registro utilizado por el cp
?
Tanto cp
como cpi
se unen para actualizar las mismas marcas y dejar todo en el mismo estado ...
¿Qué me estoy perdiendo?
Tenga en cuenta que cp
terminó siendo mucho más costoso que solo el ciclo adicional porque forzó una secuencia push
/ pop
en r24
, que cuesta 4 ciclos adicionales (6 ciclos en total).
Estoy usando el AVR8/GNU C Compiler : 5.4.0
que se incluye con Atmel Studio 7.0