Atmel Studio
Napsal: 24 kvě 2013, 21:50
Ahoj rád bych začal pracovat v AtmelStudiu ale hned 1. nesmělý pokus skončil fiaskem. Pokusil jsem se přeložit následující program
int main(void)
{
a = 1;
b = 2;
while(1)
{
a=a+1;
b=b+a;
}
}
Kompilátor to přeložil následujícím způsobem
{
a = 1;
00000025 LDI R24,0x01 Load immediate
00000026 LDI R25,0x00 Load immediate
00000027 STS 0x0103,R25 Store direct to data space
00000029 STS 0x0102,R24 Store direct to data space
b = 2;
0000002B LDI R24,0x02 Load immediate
0000002C LDI R25,0x00 Load immediate
0000002D STS 0x0101,R25 Store direct to data space
0000002F STS 0x0100,R24 Store direct to data space
00000031 RJMP PC-0x0000 Relative jump
--- No source file -------------------------------------------------------------
00000032 CLI Global Interrupt Disable
00000033 RJMP PC-0x0000 Relative jump
Docela mě překvapilo, že si neláme hlavu s nekonečným cyklem While(1) a hrubě z toho udělá na adrese 31 RJMP PC-0. Tělo cyklu zmizelo.
Když z nekonečného cyklu udělám konečný například While( a < 10), tak to přeloží správně.
Napadá někoho, co je špatně?
díky Jirka
int main(void)
{
a = 1;
b = 2;
while(1)
{
a=a+1;
b=b+a;
}
}
Kompilátor to přeložil následujícím způsobem
{
a = 1;
00000025 LDI R24,0x01 Load immediate
00000026 LDI R25,0x00 Load immediate
00000027 STS 0x0103,R25 Store direct to data space
00000029 STS 0x0102,R24 Store direct to data space
b = 2;
0000002B LDI R24,0x02 Load immediate
0000002C LDI R25,0x00 Load immediate
0000002D STS 0x0101,R25 Store direct to data space
0000002F STS 0x0100,R24 Store direct to data space
00000031 RJMP PC-0x0000 Relative jump
--- No source file -------------------------------------------------------------
00000032 CLI Global Interrupt Disable
00000033 RJMP PC-0x0000 Relative jump
Docela mě překvapilo, že si neláme hlavu s nekonečným cyklem While(1) a hrubě z toho udělá na adrese 31 RJMP PC-0. Tělo cyklu zmizelo.
Když z nekonečného cyklu udělám konečný například While( a < 10), tak to přeloží správně.
Napadá někoho, co je špatně?
díky Jirka