Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Inline ASM für Win32 - Einsteiger Crashkurs (https://www.delphipraxis.net/78592-inline-asm-fuer-win32-einsteiger-crashkurs.html)

Balu der Bär 28. Apr 2007 12:13

Re: Inline ASM für Win32 - Einsteiger Crashkurs
 
Da ich noch viele Tipps und Hinweise per PN bekommen habe, gibt es voraussichtlich Ende Mai eine neue bzw. eine überarbeitete Version mit einigen Neuerungen. Solltet ihr also noch etwas auszusetzen / anzumerken haben, immer her damit. :stupid:

Apollonius 29. Apr 2007 13:03

Re: Inline ASM für Win32 - Einsteiger Crashkurs
 
Ich finde dieses Tutorial sehr informativ, man versteht auch sehr viel besser, wie Delphi Parameterübergabe etc. erledigt, wenn man sowas mal von Hand macht.
Ich hätte allerdings noch eine Frage zu LEA. Die Erklärung ist für mich etwas rätselhaft und auch, wie man damit multiplizieren kann, sowie die eckigen Klammern sind böhmische Dörfer für mich.
Zitat:

Zitat von Balu der Bär
Delphi-Quellcode:
LEA Ziel, Quelle
Der Befehl LEA läd die Speicheradresse der Quelle in das Ziel. Das Ziel muss ein 32 Bit Register sein und die Quelle einen Speicherwert beinhalten. LEA eignet sich aber auch zum einfachen Multiplizieren, welches man beispielswiese per LEA [EAX+EAX*2] // EAX:=EAX*3 machen könnte.


Apollonius 1. Mai 2007 10:02

Re: Inline ASM für Win32 - Einsteiger Crashkurs
 
Das interessiert mich wirklich, deshalb *push*

Balu der Bär 1. Mai 2007 10:07

Re: Inline ASM für Win32 - Einsteiger Crashkurs
 
Hallo Apollonius,

ich überarbeite das Tutorial zur Zeit. Weitere Informationen zu LEA findest du hier (Unterpunkt LEA) oder über die Suchmaschine deiner Wahl.

Grüße

Amateurprofi 1. Mai 2007 11:01

Re: Inline ASM für Win32 - Einsteiger Crashkurs
 
Zitat:

Delphi-Quellcode:
CDQ
Dieser Befehl wird benötigt, um die beiden Register EAX und EDX auf die Multiplikation (IMUL) bzw. Division (IDIV) von signed Werten vorzubereiten, indem EAX auf 64 Bit erweitert wird.
Balu,
das ist so nicht ganz richtig.
Bei IMUL (und auch bei MUL) ist eine Erweiterung auf 64 Bit nicht erforderlich.

IMUL kannst du mit 1, 2, oder 3 Operanden einsetzen.
Beispiele

IMUL EBX
multipliziert EAX mit EBX und stellt das 64 Bit Produkt in EDX:EAX

IMUL EBX,ECX
multipliziert EBX mit ECX und stellt die unteren 32 Bit des 64 Bit Produktes in EBX.
Weder EAX noch EDX werden hierbei verändert, es sei denn der erste Operand wäre EAX oder EDX

IMUL EBX,ECX,35
multipliziert ECX mit 35 und stellt die unteren 32 Bits des 64 Bit Produktes in EBX.
Weder EAX noch EDX werden hierbei verändert, es sei denn der erste Operand wäre EAX oder EDX


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz