OT korret?

06/09/2007 - 20:20 von Jan Bruns | Report spam
Hallo.

Ich habe hier so eine Prozedur geschrieben, habe aber
zur Zeit den Schàdel für solche Probleme irgendwie gar
nicht frei, unacht,villeicht kann hier just jemand ma
'nen Blick darauf werfen, dem solche Zusammenhànge
aktuell irgendwie parater sind.

Die Prozedur sieht erstmal so aus:

PROCEDURE extend(a1,a2 : dword; VAR b1,b2 : qword);
VAR q0,q1,q2,c : qword;
BEGIN
q0 := b2 and ($FFFFFFFF00000000);
q1 := q0 or a1;
q2 := q0 or a2;
if (a1>a2) then q2 := q2 + $100000000;
q0 := q1 + (dword(q2-q1) shr 1);
c := b1 + (dword(b2-b1) shr 1);
q0 := q0 + $7FFFFFFF;
c := (q0-c) and ($FFFFFFFF00000000);
b1 := q1 - c;
b2 := q2 - c;
END;


Machen soll sie folgendes:

Die dwords a1 und a2 beschreiben ein "Fenster" in einen
64-Bit Adressraum. Dort ist die mit a1 gemeinte Adresse immer
kleiner als die mit a2 gemeinte Adresse. Die unteren dwords
von b1 bzw. b2 sollen aber jeweils gleich a1 bzw. a2 sein.

Zweck der Prozedur soll es sein, das "Fenster" im 64-Bitraum
automatisch passend zu verschieben, und zwar unter zuhilfenahme
der Annahme, daß das neue Fenster an das vorherige lückenlos
angrenzt, oder es sogar überlappt.

Die Frage ist nun wie gross das Fenster maximal sein darf,
damit diese (oder von mir aus auch eine andere, noch zu findende
Mehode) den Anforderungen entspricht (mir würden 2^30 Adressen
genügen).

Gruss

Jan Bruns
 

Lesen sie die antworten

#1 Jan Bruns
06/09/2007 - 20:32 | Warnen spam
"Jan Bruns":
nicht frei, unacht,villeicht kann hier just jemand ma



Ich habe übrigens eine nicht so supergut funktionierende
Funktastatur. "unacht" heisst "und dachte".

Gruss

Jan Bruns

Ähnliche fragen