#define F_CPU 13516800UL #include #include #include #include #include #include #include #include volatile uint32_t dot_datas[10] = {0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF}; volatile uint32_t dot_bss[10]; __attribute__((naked)) int main(void) { asm("nop"::); asm("nop"::); for(;;) { //This is to build up nonsense in the registers if( dot_datas[4] & dot_datas[7] ) { for( dot_bss[5] = 0; dot_bss[5] < 89; ++dot_bss[5] ) { dot_datas[2] += dot_bss[5]; dot_datas[8] += dot_datas[2]; dot_bss[(dot_bss[5]&0x07)] += dot_datas[9]; } if( dot_datas[6] ) { //Now we find the problem with stack-allocated array; its base pointer is... uint16_t adc_readings[8]; uint8_t i; for( i=0; i<8; ++i ) { adc_readings[i] = dot_bss[8]&0xFFFF; } dot_datas[0]++; for( i=1; i<9; ++i ) { dot_bss[i] = adc_readings[i-1]; } } } } }