Frage wäre jetzt, wieso es bei cxAlex kein Problem gibt ? ^^
Mein Fehler, ich hatte in der Compilerauswahl umgeschalten aber dann auf "cancel" geklickt ...
Unter x64 zeigt sich mit jetzt auch dasselbe Bild. Aber ich denke ich habe den Fehler gefunden:
Ich habe folgenden Code:
Code: Alles auswählen
q.q = 100000000
q - 99999990
MessageRequester("",Str(q))
q.q = 1000000000000
q - 999999999990
MessageRequester("",Str(q))
per "pbcompiler /commented test.pb" als ASM Source ausgeben lassen. Die Stellen auf die es ankommt sind wohl:
Code: Alles auswählen
; q.q = 100000000
MOV qword [v_q],100000000
; q - 99999990
MOV r15,qword [v_q]
ADD r15,-99999990
Und
Code: Alles auswählen
; q.q = 1000000000000
MOV rax,1000000000000
MOV qword [v_q],rax
; q - 999999999990
ADD qword [v_q],727379978
Der PB - Compiler erkennt den Quad zwar richtig, aber ich vermute die Variable die intern den Wert speichert (da das ganze nicht über eine 2. Quad - Variable geht, wo es ja funktioniert) und negiert (und das Ganze damit von einer Subtraktion auf eine Addition umwandelt) ist ein Long und fließt hier über.