Porabany kompilator
Masz problem? Zapytaj na forum elektroda.pl
From: "pytajnik" <nicniewiem_at_nospam_op.pl>
Subject: Porabany kompilator
Date: Wed, 19 Mar 2003 18:47:11 +0100
Dlaczego ten AVR GCC jest taki porabany?
W poniższej procedurce wykonanie pierwszej instrukcji powoduje zmianę
zmiennej arg (wycięcie młodszego półbajtu)!!!
Jaki standard przewiduje tak skopmilować program? ANSI?
Gdyby zmienna arg, nie była dalej używana w procedurze, to rozumiem, ale
przecież jest!
void procedura(unsigned char arg)
{
PORTB=(PORTB&0x0f)|(arg&0xf0);
asm("nop");
PORTB=(PORTB&0x0f)|((arg<<4)&0xf0);
asm("nop");
}
ale wersja poniższa działa poprawnie:
void procedura(unsigned char arg)
{
PORTB=(PORTB&0x0f)|(arg&0xf0);
asm("nop");
PORTB=(PORTB&0x0f)|((arg&0x0f)<<4);
asm("nop");
}
Nic z tego nie rozumiem.
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai