Problem mit Quads

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Problem mit Quads

Beitrag von STARGÅTE »

Sagt mal Leute, kann mir hier mal einer Sagen, ob ich übermüdet bin, oder kann PB nicht mehr mit Quads rechnen?

Code: Alles auswählen

q.q = 100000000
q   -  99999990 
Debug q

q.q = 1000000000
q   -  999999990 
Debug q

q.q = 10000000000
q   -  9999999990 
Debug q

q.q = 100000000000
q   -  99999999990
Debug q

q.q = 1000000000000
q   -  999999999990 
Debug q
10
10
8589934602
98784247818
1000727379978
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: Problem mit Quads

Beitrag von cxAlex »

Ergibt bei mir:
10
10
10
10
10
Win 7 x64 PB 5.1 x86/x64

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Re: Problem mit Quads

Beitrag von - chris - »

Bei mit sieht es so aus:

mit 32bit

Code: Alles auswählen

10
10
10
10
10
mit 64bit

Code: Alles auswählen

10
10
8589934602
98784247818
1000727379978
PB v5.72 x86/x64
Windows 10 Pro 64bit
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Problem mit Quads

Beitrag von Danilo »

- chris - hat geschrieben:Bei mit sieht es so aus

mit 32bit

Code: Alles auswählen

10
10
10
10
10
mit 64bit

Code: Alles auswählen

10
10
8589934602
98784247818
1000727379978
Bei mir ebenfalls. Kann es sein, das PB die Zahl hinter dem Minus nicht als Quad castet oder bei der Konvertierung zu ASM etwas falsch macht?

Als Variable funktioniert es dann auch korrekt, nur "direkt" eben nicht:

Code: Alles auswählen

q.q = 100000000
q   -  99999990 
Debug q

q.q = 1000000000
q   -  999999990
Debug q

q.q  = 10000000000
q2.q = 9999999990
q    - q2
Debug q

q.q  = 100000000000
q2.q =  99999999990
q    - q2
Debug q

q.q  = 1000000000000
q2.q =  999999999990 
q    - q2
Debug q

Der ASM-Ausschnitt von STARGÅTEs Original mit PB5.10 x64:

Code: Alles auswählen

; q.q = 100000000
  MOV    qword [v_q],100000000
; q   -  99999990
  MOV    r15,qword [v_q]
  ADD    r15,-99999990                 ; OK
  MOV    qword [v_q],r15
; Debug q
; 
; q.q = 1000000000
  MOV    qword [v_q],1000000000
; q   -  999999990
  MOV    r15,qword [v_q]
  ADD    r15,-999999990                ; OK
  MOV    qword [v_q],r15
; Debug q
; 
; q.q = 10000000000
  MOV    rax,10000000000
  MOV    qword [v_q],rax
; q   -  9999999990
  MOV    r15,qword [v_q]
  ADD    r15,-1410065398               ; ?
  MOV    qword [v_q],r15
; Debug q
; 
; q.q = 100000000000
  MOV    rax,100000000000
  MOV    qword [v_q],rax
; q   -  99999999990
  MOV    r15,qword [v_q]
  ADD    r15,-1215752182               ; ?
  MOV    qword [v_q],r15
; Debug q
; 
; q.q = 1000000000000
  MOV    rax,1000000000000
  MOV    qword [v_q],rax
; q   -  999999999990
  ADD    qword [v_q],727379978        ; ?
; Debug q
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Problem mit Quads

Beitrag von Josh »

gleiches Ergebnis wie bei Chris hier:

Win7 32: ok
Win7 64: flasch
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Problem mit Quads

Beitrag von STARGÅTE »

Alles klar, ist im englischen Forum gepostet.

Frage wäre jetzt, wieso es bei cxAlex kein Problem gibt ? ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: Problem mit Quads

Beitrag von cxAlex »

Frage wäre jetzt, wieso es bei cxAlex kein Problem gibt ? ^^
Mein Fehler, ich hatte in der Compilerauswahl umgeschalten aber dann auf "cancel" geklickt ... :oops:

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.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten