mir ist grad in einem Projekt etwas eigenartiges aufgefallen und ich konnte es jetzt auf 2 PCs genauso nachvollziehen.
Delphi-Quellcode:
var i, j: Integer;
k: Int64;
begin
i := 123;
j := 456;
k := (i shl 32) or j;
eigentlich müßte hier ja i3 = 456 sein, da wie Neutral General in Beitrag #3 schon richtig erklärte, der Wert von
i aus dem Wertebereich rausverschoben werden sollte,
ABER
ich bekomme 507 raus, also quasi
k := i or j;
laut Debugger stimmt dieses tatsächlich, da der Wert von
i, trotz erfolgreich ausgeführtem SHL-Befehl, im entsprechendem Register garnicht verändert wird.
[add] ach ja, hab hier einen kleinen Athlon64 drinnen
und ein WinXP SP3 mit 32 Bit