Hallo, ich möchte 32bit breite Daten vom typ unsigend int auf eine Variable der Grösse 64bit aufakkumulieren. Nun kam mir die Idee diese Geschichte mit Hilfe einer Union zu lösen. union union_data { unsigned int long long v64; unsigned int v32; }; Ich addiere nun Daten auf union_data.v32 auf. Wenn ein Überlauf stattfinden, wird dieser in union_data.v64 zu sehen sein ? Habe leider keinen Rechner zur Hand an dem ich dies ausprobieren könnte. Danke und Gruss, Martin
> Wenn ein Überlauf stattfinden, wird dieser in union_data.v64 zu sehen > sein ? Nein. Ich verstehe auch den Sinn nicht. Warum nimmst du nicht gleich einfach eine 64bit-Variable?
Das ganze läuft auf einem 32bit proc. und ist in assembler geschrieben. Die eigentliche Auswerteroutine wiederrum in C. Ich wollte mir somit eigentlich nur die Überlauf Überprüfung im Assembler Code schenken. Danke jedoch, Martin
@ Martin (Gast) >Ich addiere nun Daten auf union_data.v32 auf. Wenn ein Überlauf >stattfinden, wird dieser in union_data.v64 zu sehen sein ? Lass diesen Hackerscheiss und mach es ordentlich. >Das ganze läuft auf einem 32bit proc. und ist in assembler geschrieben. Wo ist dann das Problem? Mach in ASM eine einfache 64 Bit Addition. Ala AVR Arithmetik >Die eigentliche Auswerteroutine wiederrum in C. Ich wollte mir somit >eigentlich nur die Überlauf Überprüfung im Assembler Code schenken. Geht nicht. ist auch nicht wirklich performancekritisch. MFG Falk
> Ich wollte mir somit eigentlich nur die Überlauf Überprüfung im > Assembler Code schenken. Wie stellst du dir das vor? Wenn du eine 32-Bit-Addition machst, wird daraus nicht auf magische Weise eine 64-Bit-Addition, nur weil Werte mit diesen beiden Bitbreiten gemeinsam in einer union stehen. Wenn du eine 64-Bit-Addition brauchst, mußt du sie auch machen. Die Überlauf Überprüfung" beschränkt sich ja in der Regel auch darauf, für die obere Hälfte statt des normalen Additionsbefehls den mit Carry zu verwenden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.