#pragma GCC optimize ("Og")
#include "ArduinoTrace.h"
volatile byte *p,da=5,va;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("INICIO");
//------------- Proceso en alto nivel -------------------
//p=&da;
asm(
"ldi r16,lo8(da) \n"
"ldi r17,hi8(da) \n" //r17:r16 direccion da
"sts p,r16 \n"
"sts p+1,r17 \n"
:::"r16","r17"
);
//va=*p;
asm(
"lds r30,p \n"
"lds r31,p+1 \n" //r17:r16 direccion da
"ld r16,z \n" //r16 <-- da
"sts va,r16 \n"
:::"r16","r30","r31"
);
//------------------------------------------------------
DUMP(sizeof(p)); //p pointer variable de 2 bytes
DUMP((uint16_t)p); //posicion a la que esta apuntando en internal SRAM
DUMP((uint16_t)&da); //posicion de la variable da en internal SRAM
DUMP((uint16_t)&p); //posicion de la variable pointer p en internal SRAM
DUMP(da);
DUMP(va);
}
void loop() {
}