AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Inline Assembler in Methoden

Ein Thema von cytrinox · begonnen am 21. Jun 2007 · letzter Beitrag vom 21. Jun 2007
Antwort Antwort
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: Inline Assembler in Methoden

  Alt 21. Jun 2007, 13:38
*von hinten aushol*

Also:
Bei der Aufrufkonvention "register" (= Delphi Standard) landen die ersten 3 Übergabeparameter in EAX, EDX, ECX, der Rest im Stack. Wenn du eine Methode hast, ist der erste Parameter immer "self", ansonsten eben nicht und in EAX steht der erste "reguläre" Übergabeparameter (wenn es ihn denn gibt), der dann bei einer Methode wie gesagt auf Position 2 (also nach EDX) geht.

In einer Funktion/Methode kannst du mit EAX, EDX und ECX machen was du willst. Alle anderen Register müssen erhalten bleiben. Umgekehrt kannst du, wenn du eine Funktion aufrufst nicht erwarten, dass EAX, EDX und ECX am Ende der Funktion mit den gleichen Werten gefüllt sind

32-Bit Rückgabewerte (Boolean, integer, smallint, byte, ...) landen immer in EAX. Fließkommawerte werden in der FPU zurückgegeben. Bei records wird als letzter Parameter ein Pointer auf das record übergeben.
Was heisst dass für dich? Den Normalfall hast du in "cpuidAvailiable". Unabhängig ob "normale" Funktion oder Methode. In EAX landet das Ergebnis.
Bei getSerial passt das Record allerdings nicht vollständig in EAX. Deswegen schafft die aufrufende Funktion etwas Platz auf dem Stack (für den record) und übergibt einen Pointer darauf als zusätzlichen Parameter. In dem Fall ist es der einzige und er landet deswegen gleich hinter self in EDX.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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-2025 by Thomas Breitkreuz