Seite 1 von 1
test()="a" erzeugt ASM-Error
Verfasst: 20.02.2007 21:06
von PureLust
Hallo zusammen,
bei folgendem Code erhalte ich
bei aktiviertem InlineASM einen Assembler-Error: "
Invalid Operand".
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.
Verfasst: 20.02.2007 21:13
von Kaeru Gaman
ich schätze eher mal, dass TEST ein x86-ASM-command ist....
Verfasst: 20.02.2007 21:13
von DarkDragon
Ist TEST nicht ein ASM Schlüsselwort?
Verfasst: 20.02.2007 21:22
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.
>>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)
Verfasst: 20.02.2007 21:28
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.
Verfasst: 20.02.2007 21:37
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)?
Verfasst: 20.02.2007 21:55
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.
Verfasst: 20.02.2007 22:04
von ts-soft
Das beigefügte Beispiel nutzt InlineASM. Enthält aber auch keine Procedure test
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.