AGB  ·  Datenschutz  ·  Impressum  







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

Funktionen in Assembler unter Delphi 7

Ein Thema von kwhk · begonnen am 12. Jul 2013 · letzter Beitrag vom 15. Jul 2013
 
Benutzerbild von kwhk
kwhk

Registriert seit: 25. Mär 2009
Ort: Dresden
168 Beiträge
 
Delphi 10.3 Rio
 
#1

Funktionen in Assembler unter Delphi 7

  Alt 12. Jul 2013, 14:28
In früheren Zeiten, als die CPUs noch langsamer waren, als heute, wurde ja auf jedes kleine etwas geachtet, um CPU-Zeit einzusparen. Eine Möglichkeit in Turbo-Pascal und Delphi waren die Assembler-Functionen. Die gaben das Ergebnis direkt im AX-Register zurück. (Muss das heute evtl. EAX sein ?) Im folgenden zwei Functionen, mit denen jeweils das Hi- oder Lo-Word eines Longint-32bit-Wertes ausgelesen werden soll. Die Function bestand nur aus einem einzigen Assembler-Befehl.
Delphi-Quellcode:
Function HiWord(Zahl:Longint):Word; Assembler;
  ASM
    MOV AX,Word Ptr [Zahl+2]
  End;

Function LoWord(Zahl:Longint):Word; Assembler;
  ASM
    MOV AX,Word Ptr [Zahl+0]
  End;
Unter Delphi 7 bringt diese Function einen Laufzeitfehler. Ich habe sie folgendermassen abgeändert, damit es funktioniert. Es sind keine Assembler-Functionen mehr. Mit ASM wird nur noch auf local vereinbarte Variable zugegriffen.
Delphi-Quellcode:
Function HiWord(pZahl:Longint):Word;
  Var
    Zahl : Longint;
    hiZahl : Word;
  Begin
    Zahl := pZahl;
    ASM
      MOV AX,Word Ptr [Zahl+2]
      MOV [hiZahl],AX
    End;
    Result := hiZahl;
  End;

Function LoWord(pZahl:Longint):Word;
  Var
    Zahl : Longint;
    loZahl : Word;
  Begin
    Zahl := pZahl;
    ASM
      MOV AX,Word Ptr [Zahl+0]
      MOV [loZahl],AX
    End;
    Result := loZahl;
  End;
Natürlich könnte man es auch anders und ohne ASM machen, meine Frage: kann ich im ASM-Bereich nicht mehr auf die übergebenen Parameter zugreifen ?
Hartmut

Geändert von kwhk (12. Jul 2013 um 14:31 Uhr)
  Mit Zitat antworten Zitat
 


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 13:39 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