test()="a" erzeugt ASM-Error

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

test()="a" erzeugt ASM-Error

Beitrag von PureLust »

Hallo zusammen,

bei folgendem Code erhalte ich bei aktiviertem InlineASM einen Assembler-Error: "Invalid Operand".

Code: Alles auswählen

NewList TEST.s()
AddElement(Test())
Test() = "a"
Das sich beim o.g. Code wohl irgendwas mit einer bereits definierten ASM_Prozedur beisst ist wohl klar (evtl. mit der Test()-Prozedur aus der Online-Hilfe?).

Aber ist das im Sinne der Erfinders, dass in PB irgendwo bereits eine Prozedur mit dem sehr aussagekräftigen Namen "Test()" vordefiniert ist?

Greetz, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich schätze eher mal, dass TEST ein x86-ASM-command ist....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ist TEST nicht ein ASM Schlüsselwort?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Hello again,

hmmm, ... wenn es ein reserviertes ASM-Commando wäre, dann dürfte ja eigentlich auch nicht das Beispiel aus der Hilfe laufen. :roll:

>>Nachtrag<<

Das Beispiel aus der Hilfe tut es tatsächlich nicht und meldet den gleichen Fehler:

Code: Alles auswählen

Procedure Test(*Pointer, Variable)
    ! MOV dword [p.p_Pointer], 20
    ! MOV dword [p.v_Variable], 30
    Debug *Pointer
    Debug Variable
EndProcedure
  
Test(0, 0)
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn nicht benötigt, InlineASM unbedingt ausschalten. Ansonsten lieber DirectASM nutzen.
Unter anderem bereiten folgende worte Probleme: test, str, xor
und ein paar mehr.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

ts-soft hat geschrieben:Unter anderem bereiten folgende worte Probleme: test, str, xor und ein paar mehr.
Aha ... thanks Thomas (bei str und xor ist das ja auch halbwegs verständlich).

@Andrè: Gibt's da irgedwo eine Auflistung drüber welche Wörter durch den InlineASM reserviert sind und wäre das nicht evtl. noch was für die Online-Hilfe (auch weil ja das bereits o.g. Beispiel aus der OH zum InlineASM nicht funktioniert)?
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> auch weil ja das bereits o.g. Beispiel aus der OH zum InlineASM nicht funktioniert

doch, tut es.

das beispiel ist für extra-commandos, die mit ! eingeleitet werden.
bei aktiviertem inline-asm braucht man das ! nicht.
außerdem müssten die argumente dann anders aussehen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Das beigefügte Beispiel nutzt InlineASM. Enthält aber auch keine Procedure test :wink:
Der Hilfetext zu InlineASM Procedure.l MyTest() ist InlineASM und funktioniert.
Der zweite Hilfetext bezieht sich auf DirektASM und ist als solcher auch korrekt.

Die ASM-Schlüsselwörter sollte jeder ASM Progger kennen, sonst nützt ihm
InlineASM nämlich nicht viel, ein Abdruck in der Hilfe also IMHO nicht nötig.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Gesperrt