Einzelnen Beitrag anzeigen

Dax
(Gast)

n/a Beiträge
 
#20

Re: Der HAM-Parser

  Alt 6. Jan 2006, 02:52
Ha, x86-Assembler is da

Registriert den Assembler im Parser so:MyAssembler := THAMAssemblerPlugin(Parser.AddPlugin(THAMAssemblerPlugin, [etAfterParse, etEval]); Dadurch assembliert der Parser (oder besser das Plugin) den Ausdruck automatisch nach dem Parsen und beim Aufruf von .Eval() wird das Kompilat aufgerufen.

Statt .Eval() nutzt ihr besser das:
Delphi-Quellcode:
var
  MyFunc: THAMAssembledMethod;

MyFunc := MyAssembler.Assembly;

//lösen einfach durch Aufruf:
WriteLn(MyFunc.Value:2:2);
Ist dann ca doppelt sie schnell wie das normale Eval()

Aber Achtung: Rückgabewerte des Kompilats sind keine eigene Objekte wie beim normalen lösen, sondern nur Referenzen auf die Lösung!

Edit: Das Plugin ist ab jetzt im Archiv im ersten Posting.

Edit 2: etEval bitte nicht mehr benutzen, das führt komischerweise zu EInvalidPointer-Exceptions, deren Urpsrung ich einfach nicht lokalisieren kann. Besides: direkt die Funktion aufzurufen ist eh nen Tick schneller
  Mit Zitat antworten Zitat