Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ASM Problem: "Operandsize Missmatch" bei "SAR EAX, DL" (https://www.delphipraxis.net/176040-asm-problem-operandsize-missmatch-bei-sar-eax-dl.html)

Memnarch 8. Aug 2013 09:07

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:
http://www.delphipraxis.net/1164475-post10.html

wenn ich die funktion für SAR aber so schreibe, bekomme ich für

Delphi-Quellcode:
asm
  SAR EAX, DL
end;
den Fehler:
"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:
asm
  SAR EAX, CL
end;
Ist das zwar vollkommen unsinnig, aber compiliert...warum? CL und DL sind beides 8Bit Register.

Was mach ich falsch?

MFG
Memnarch

gammatester 8. Aug 2013 10:22

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:!:

Memnarch 8. Aug 2013 11:38

AW: ASM Problem: "Operandsize Missmatch" bei "SAR EAX, DL"
 
ACH DRECK, das heißt ich komm um nen extra

Delphi-Quellcode:
mov CL, DL
nicht drumrum? :(

Ich wünscht wir hätten registermapping für Parameter in Delphi.

gammatester 8. Aug 2013 11:52

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:
mov ecx, edx
nehmen :wink: (ist vielleicht etwas schneller)

Neutral General 8. Aug 2013 12:38

AW: ASM Problem: "Operandsize Missmatch" bei "SAR EAX, DL"
 
Keine Ahnung obs schneller geht aber es gibt auch

Code:
xchg dl, cl
Edit: Wobei das natürlich nochmal was anderes ist als ein mov. weils die Werte tauscht... :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz