PittyJ schrieb:
> Meiner Meinung nach muss data erst auf uint64_t erweitert werden, bevor
> der shift stattfinden darf.
>
> Also sowas wie
> rom_adress|=( (( unint64_t)data)<<shift);
Ja, richtig.
> Da ich aber deine falsch/richtig-Bewertung nicht kenne, sind das nur
> Vermutungen.
Ich tendiere dazu, nicht gleich die fertige Lösung zu präsentieren,
sondern einen Hinweis auf den Fehler, damit der Fragesteller die
Möglichkeit hat, selbst auf die Lösung zu kommem und zu verstehen, warum
sie nötig ist.
Peter F. schrieb:
> Vielen Dank noch mal. Aber leider Funktioniert das nicht so recht.
> @(easylife)
Dann ist wahrscheinlich wirklich was am Compiler.
> Wenn ich deine Methode mache ist der Wert während der Schleife
> 0x800000000.
Während, oder danach?
Joe F. schrieb:
> Das verstehe ich dann auch nicht.
> Denn wenn in den obersten 8 bit 0x80 steht, heisst das dass im ersten
> Schleifendurchlauf korrekterweise 0x80 mit rom_address ver-odert wurde.
Nein, denn so weit wird bei deinem Code gar nicht geshiftet, daß da
überhaupt irgendwas ankommen darf. Im Originalcode wird maximal um 48
Bits geshiftet, aber dein Code shiftet nur um maximal 24 Bits und
beschreibt damit nur die unteren 32 Bits. 0x800000000 heißt aber, daß
Bit 35 das einzige ist, das gesetzt wurde.