#pragma GCC optimize "-Og"
#include "ArduinoTrace.h"
volatile byte a=8,b=5;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
//------------ process -----------------------
// if (a>7)
// {
// a=a-b;
// }
// else
// {
// a=a+b;
// }
// if (a>7)
// {
// goto L10;
// }
// else
// {
// goto L20;
// }
asm goto
(
//"lds r24,a \n"
//"cpi r24,8 \n"
"mov %1,%0 \n"
"cpi %1,8 \n"
"in %0,%2 \n"
"sbrc %0,0 \n"
//goto L20
"rjmp %l[L20] \n"
//goto L10
"rjmp %l[L10] \n"
:
:"r"(a),"d"(8),"I"(_SFR_IO_ADDR(SREG))
:
:L20,L10
);
L10: //True
asm volatile
(
// "lds r24,a \n"
// "lds r25,b \n"
"sub %0,%1 \n"
:"+r"(a),"+r"(b)::
);
// goto L30
asm goto
(
"rjmp %l[L30]"
::::L30
);
L20:
asm volatile
(
// "lds r24,a \n"
// "lds r25,b \n"
//"add r24,r25 \n"
"add %0,%1 \n"
//"sts a, r24 \n"
:"+r"(a),"+r"(b)::
);
L30:
DUMP(a);
}
void loop() {
// put your main code here, to run repeatedly:
}