#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);
asm goto
(
//"lds r24,a \n"
//"cpi r24,8 \n" //a-8
"cpi %0,8 \n"
// "in r24,0x3F \n" //r24 <--- sreg
"in %0,%1 \n" //en %0 está Sreg
// "sbrc r24,0 \n"
"sbrc %0,0 \n"
"rjmp %l[L20] "
:
:"d"(a),"I"(_SFR_IO_ADDR(SREG))
:
:L20
);
L10:
// a=a-b;
asm volatile
(
//"lds r24,a \n"
//"lds r20,b \n"
// "sub r24,r20 \n"
"sub %0,%1"
//"sts a,r24"
:"+r"(a)
:"r"(b)
:
);
// goto L30;
asm goto
(
"rjmp %l[L30] \n"
::::L30
);
L20:
// a=a+b;
asm volatile
(
// "lds r24,a \n"
// "lds r20,b \n"
"add %0,%1 \n"
// "sts a,r24"
:"+r"(a)
:"r"(b)
:
);
L30:
//-----------------------------------------
DUMP(a);
}
void loop() {
}