Entwickler-Ecke
Algorithmen, Optimierung und Assembler - [ASM] Error: Invalid combination of opcode and operands (D5)
maps - Do 11.05.06 00:24
Titel: [ASM] Error: Invalid combination of opcode and operands (D5)
Hallo.
Ich benutze in meinem jetzigen Schulprojekt eine Unit, die regen Gebrauch der Inline Assembler Fähigkeiten des Compilers übt.
Wenn ich mein Projekt samt Unit in Borland Delphi 7 kompiliere kommt es zu keinen Problemen.
In meiner Schule wird jedoch Delphi 5 benutzt und das weigert sich vehement die Unit zu übersetzen.
Ich bekomme die Fehlermeldung "Invalid combination of opcode and operands".
Betroffen sind solche Instruktionen:
"mov [eax-048h], 37026193h"
"call [ecx-064h]"
"movzx ebp, [ebp+00Ah]"
Ist es möglich jene Unit kompatibel zu Delphi 5 zu machen?
Falls nicht, ist es möglich die Unit mit Delphi 7 zu kompilieren und die erzeugte DCU in Delphi 5 zu verwenden?
Danke.
Allesquarks - Do 11.05.06 01:36
Hab selber auch nur Delphi 7. Daher rate ich mal, weil bei mir in Assembler die meisten Fehler wegen fehlender Größenangaben kommen, dass zumindest bei den "movxx"-Befehlen, vielleicht ein dword ptr abhilfe schafft.
Schwedisch ist für mich nur movzx ebp, [pointer];
Dachte das wäre nur auf ein register anwendbar. Nun ja wenn ich so spät am Abend nicht falsch liege heißt der Befehl mov with zero extension, was dann aber auf nen datentyp anderer Größe angewendet werden sollte, denn anders wäre es redundant => word ptr => was zur nächsten Frage führt: ist das auch auf nen Byte anwendbar, denn dann gäbe es ja ne Mehrdeutigkeit. Nun ja einfach mal ausprobieren. Wird schon schiefgehen :wink:
BenBE - Do 11.05.06 14:35
maps hat folgendes geschrieben: |
Betroffen sind solche Instruktionen:
"mov [eax-048h], 37026193h"
"call [ecx-064h]"
"movzx ebp, [ebp+00Ah]" |
Alle von Dir angesprochenen Befehle sind laut ASM unvollständig. Für die ersten beiden musst Du ein
DWORD PTR ergänzen, für die dritte Anweisung bräuchte ich einmal den Kontext, da sowohl
BYTE PTR als auch
WORD PTR sinnvoll passen würden.
Beim Inline-Assembler von Delphi sollte man sich immer angewöhnen die gemeinte Größe der Operanden explizit mit anzugeben, auch wenn dies oftmals unnötig ist.
maps - So 14.05.06 12:26
Vielen Dank!
Alles funktioniert nun.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!