Gast
#453003
Hallo, ich rufe folgende Routine
long long bla(long long eins,long long zwei,long long drei)
{
return drei ;
}
so auf:
rerere=bla( (long long)(1ll),(long long)(2ll),(long long)(3ll));
Das "1ll" ist "eins Ell Ell", Suffix für long long, also richtiger Typ
mit nem Sicherheits-cast.
Das funzt auch, die zwei kommt zurück, die eins auch, die drei aber
nicht !?
D.h. return(3); liefert Schrott zurück.
Die funktionierende Variante macht das handling der Daten nur über die
Register, die nicht-funktionierende Variante holt sich die Daten vom
Stack und liefert sie in den Registern zurück. Die Stackzugriffe gehen
wohl schief. Im angehängten File Auszüge des listings. Zu geringe
Stackgröße ist ausgeschlossen.
Atmega128 ist Zielhardware, natürlich GCC.
Wo liegt der Fehler, gibts Infos oder Optionen dazu, die mir unbekannt
sind?
Danke
Cheers
Detlef