Hallo RedBaron,

1. Naja:
Code:
register unsigned char Data asm("r6");

int main(void)
{ while(1)  
  { Data++;  
  }
}
Ist für einen optimierenden Compiler auch unsinnig, Data wird nirgends verwendet, also weg damit.
Versuch mal:
Code:
register unsigned char Data asm("r6");
unsigned char b;

int main(void)
{ while(Data)  
  { Data++;  
  }
  b = Data;
}
2. register ist und war immer nur eine Empfehlung an den Compiler. Der kann das berücksichtigen.
Was er Compiler mit register macht, sollte unter "Implementation Specific" nachzulesen sein.

MfG Peter(TOO)