Код: Выделить всё
#define __far_mem_write(addr, data) \
(__extension__({ \
uint32_t temp32 = (uint32_t)(addr); \
asm volatile( \
"in __tmp_reg__, %1" "\n\t" \
"out %1, %C0" "\n\t" \
"movw r30, %0" "\n\t" \
"st Z, %2" "\n\t" \
"out %1, __tmp_reg__" \
: \
: "r" (temp32), \
"I" (_SFR_IO_ADDR(RAMPZ)), \
"r" ((uint8_t)data) \
: "r30", "r31" \
); \
}))Мои познания в асме не позволяют этого сделать. например, в упор не пойму что такое %1, %C0 и т.д.
