#pragma GCC optimize ("Og")
#include "ArduinoTrace.h"
volatile int8_t a=3,b=0,c=0,i=0; //prueba1 b=10,c=0
//volatile int8_t a=4,b=0,c=0,i=0; //prueba2 b=0,c=10
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//------------ PROCESO --------------------------------
// for(i=1;i<5;i++)
// {
// if (a<=3)
// {
// b=b+i;
// }
// else
// {
// c=c+i;
// }
// }
initw1:
// if(i<5)
// {
// goto body1;
// }
// else
// {
// goto endw1;
// }
asm goto
(
"lds r16,i \n"
"cpi r16,5 \n"
"brlt %l[body1] \n"
"jmp %l[endw1] \n"
::::body1,endw1
);
body1:
// if(a<=3)
// {
// b=b+i;
// }
// else
// {
// c=c+i;
// }
// i++;
// goto initw1;
asm goto
(
"lds r16,a \n"
"cpi r16,4 \n"
"brlt %l[bodyif] \n"
"jmp %l[else1] \n"
::::bodyif,else1
);
bodyif:
asm goto
(
"lds r19,c \n"
"ldi r18,i \n"
"add r19,r18 \n"
"sts c,r19 \n"
"jmp %l[endif1] \n"
::::endif1
);
else1:
asm goto
(
"lds r17,b \n"
"ldi r18,i \n"
"add r17,r18 \n"
"sts b,r17 \n"
"jmp %l[endif1] \n"
::::endif1
);
endif1:
asm goto
(
"lds r18,i \n"
"ldi r19,1 \n"
"add r18,r19 \n"
"sts i,r18 \n"
"jmp %l[initw1] \n"
::::initw1
);
endw1:
//-------------------------------------------------------
DUMP(b);
DUMP(c);
}
void loop() {
// put your main code here, to run repeatedly:
}