Witam,
mam dwa pliki projektu w C: interrupt. i main.c (dla uproszczenia).
interrupt.c:
main.c:
po kompilacji otrzymuje cos takiego:
kompilatorowi wydaje sie, ze jest madrzejszy od wszystkich i stwierdza, ze zmienna Frame nie zmieni sie i wywala mi caly ten fragment :/ Czy jest jakis sposob zeby kompilator to normalnie skompilowal zeby nie pisac tego w asemblerze ? (nie to zebym nie lubil ale ja mam tego duzo i pisanie raz w C raz w asemblerze moze byc nie za fajne).
mam dwa pliki projektu w C: interrupt. i main.c (dla uproszczenia).
interrupt.c:
static volatile TFrame Frame ={0};
SIGNAL (SIG_INTERRUPT0)
{
(...) //m.in. zmienia sie struktura Frame
}main.c:
extern TFrame Frame;
void main (void)
{
(...)
sei();
while (1)
{
if (Frame.state & READY)
{
(...) //tutaj nie zmieniam zmiennej Frame, jedynie sprawdzam jej stan
{
}
}po kompilacji otrzymuje cos takiego:
sei();
da: 78 94 sei
dc: ff cf rjmp .-2 ; 0xdc <main+0x4a>kompilatorowi wydaje sie, ze jest madrzejszy od wszystkich i stwierdza, ze zmienna Frame nie zmieni sie i wywala mi caly ten fragment :/ Czy jest jakis sposob zeby kompilator to normalnie skompilowal zeby nie pisac tego w asemblerze ? (nie to zebym nie lubil ale ja mam tego duzo i pisanie raz w C raz w asemblerze moze byc nie za fajne).
