Assembler Fehler: FIMUL - invalid operand

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Assembler Fehler: FIMUL - invalid operand

Beitrag von NicTheQuick »

Bin eben auf keinen wirklichen Bug gestoßen, aber vielleicht will man es ja
ändern.
Folgender Code:

Code: Alles auswählen

Structure RTP3D ;Struktur für 3D-Vektoren oder Punkte im 3D-Raum
  x.d
  y.d
  z.d
EndStructure

Macro RT_SMul(a, s)
  a\x * s : a\y * s : a\z * s
EndMacro

Define Ray.RTP3D, Light.RTP3D

Ray\x = 1
Ray\y = 1
Ray\z = 1

Light\x = -1
Light\y = -1
Light\z = -1

RT_SMul(Ray, Light)
Lässt bei mir folgendes Fensterchen aufpoppen:
Assembler Fehler
PureBasic.asm [67]:
FIMUL dword v_Light
error: invalid operand.
Eigentlich hab ich nur aus Versehen das falsche Makro verwendet, aber
danach dachte ich, dass dann eher ein Fehler von PB und nicht von FASM
kommen müsste.
Wenn man statt dem Light ein @Light schreibt, sollte es ja eigentlich auch
funktionieren, auch wenn das ziemlich unsinnig wäre und man nichts mit
dem Ergebnis anfangen könnte. Und wenn man in der RTP3D-Struktur
überall Longs statt Doubles einsetzt, funktioniert auch alles. Mit Doubles
allerdings nicht.

Als Bug kann man es wohl nicht richtig bezeichnet, weil es durch einen
Fehler von mir entstanden ist, aber vielleicht ist es eine Sache, die Fred
trotzdem ändern will.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Sry dass ich keine Antwort geben kann, aber warum ist mein Name im Source vorhanden? Gibt es einen bestimmten Grund dafür? :mrgreen:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: Assembler Fehler: FIMUL - invalid operand

Beitrag von DrShrek »

NicTheQuick hat geschrieben:....t, aber vielleicht ist es eine Sache, die Fred
trotzdem ändern will.
@NicTheQuick, schreibst Du bitte den Bug im englischen Board?
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Helle
Beiträge: 566
Registriert: 11.11.2004 16:13
Wohnort: Magdeburg

Beitrag von Helle »

Ich würde es schon als richtigen Bug bezeichnen; verwunderlich ist nur, das bisher niemand ihn bemerkt hat (oder doch, und derjenige sucht heute noch :mrgreen: ).
Auswertung des Assembler-Outputs:
Grund für die Fehlermeldung sind die fehlenden Brackets [], die bei Befehlen ohne Register-Beteiligung von FAsm zwingend erwartet werden:

Code: Alles auswählen

Light.d

!fimul dword [v_Light]   ;Richtig
!fimul dword v_Light     ;Falsch

;siehe auch:
!imul ebx,dword v_Light        ;Richtig; ich würde trotzdem [v_Light] schreiben!
!imul dword v_Light            ;Falsch 
!imul dword [v_Light]          ;Richtig
Das "imul ebx,v_Light" stammt übrigens aus der Version mit Light als Long.

Gruss
Helle
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

Ich habs als BUG reported!
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Antworten