ich bin gerade etwas verwirrt (vermutlich, weil ich mich heute mit sowas nicht befassen sollte^^):
Weiso haben eigentlich Pointer auch ein Vorzeichen.
Negative Adresse gibt es nicht, und auch wenn intern die auch bei $90909090 (unter 32Bit) die richtige Adresse angesprungen wird, so gibt es in PureBasic ein Problem, wenn man es mit der Adresse $70707070 vergleichen würde.
Code: Alles auswählen
Procedure Test(*A, *B, C.l, D.l)
If *A < *B
Debug "Pointer, Schlecht"
EndIf
If C < D
Debug "Long, OK"
EndIf
EndProcedure
Test($90909090, $70707070, $90909090, $70707070)
Code: Alles auswählen
While *Tiefer < *Hoeher
PokeL(*Tiefer, 0)
*Tiefer + 4
Wend
Nachdem ich in den ASM-Code geguckt habe, sehe ich das beim If in beiden Fällen mit JGE (Greater or Equal) rausgesprungen wird, obwohl ich gedacht hätte das man bei Pointern dann JAE (Above or Equal) benutzt.
Bedeutet das jetzt, das so manche Codes nicht mehr funktionieren würden, wenn die Speicheradresse wirklich mal über den 2GiB liegen würde?