![]() |
Delphi-Version: XE
ASM Problem: "Operandsize Missmatch" bei "SAR EAX, DL"
Moin allerseits,
Habe gerade nen Compilerfehler bekommen, den ich nicht verstehe. Himitsu hatte vor LANGER Zeit mal hier ein Beispiel gepostet: ![]() wenn ich die funktion für SAR aber so schreibe, bekomme ich für
Delphi-Quellcode:
den Fehler:
asm
SAR EAX, DL end; "Operandsize missmatch" Momentmal...DL ist doch 8 bit?(und wird vom Compiler auch für den Parameter angesteuert) Wenn ich jetzt folgendes schreibe:
Delphi-Quellcode:
Ist das zwar vollkommen unsinnig, aber compiliert...warum? CL und DL sind beides 8Bit Register.
asm
SAR EAX, CL end; Was mach ich falsch? MFG Memnarch |
AW: ASM Problem: "Operandsize Missmatch" bei "SAR EAX, DL"
Du machst nichts falsch (Himitsu allerdings schon), Shifts mit Register als Zähler benutzen immer CL:!:
|
AW: ASM Problem: "Operandsize Missmatch" bei "SAR EAX, DL"
ACH DRECK, das heißt ich komm um nen extra
Delphi-Quellcode:
nicht drumrum? :(
mov CL, DL
Ich wünscht wir hätten registermapping für Parameter in Delphi. |
AW: ASM Problem: "Operandsize Missmatch" bei "SAR EAX, DL"
Im Prinzip nein, wenn Du solche Funktionen mit der normalen Aufrufkonvention benutzt. Aber Du kannst auch
Delphi-Quellcode:
nehmen :wink: (ist vielleicht etwas schneller)
mov ecx, edx
|
AW: ASM Problem: "Operandsize Missmatch" bei "SAR EAX, DL"
Keine Ahnung obs schneller geht aber es gibt auch
Code:
Edit: Wobei das natürlich nochmal was anderes ist als ein mov. weils die Werte tauscht... :wall:
xchg dl, cl
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz