Einzelnen Beitrag anzeigen

Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#13

AW: Rotate in Delphi-Language?

  Alt 28. Okt 2014, 12:27
Weils ziemlich "gefährlich" ist.
Du weißt in der inline-Methode nicht welche Register in der aufrufenden Methode noch gebraucht werden, du weißt nicht wie der Stack aussieht etc. Und Delphi weiß nicht was du da in Assembler geschrieben hast und schafft es dann einfach nicht dein Assemblercode in die entsprechenden Methoden einzubauen. Denn da wie schon gesagt der Code meistens nicht 1:1 in die aufrufende Methode passt (ohne irgendwas kaputt zu machen) müsste Delphi die Semantik deines Codes erkennen und deinen Ursprungscode dynamisch an die jeweilige Situation der aufrufenden Methode anpassen.
Ich schätze das würde funktionieren, wenn man einen gewissen satz an restriktionen setzen würde.

Max 2 Paremeter + Result
Parameter und Result werden fest auf einen eigenen register gemapped (Deswegen auch nur support für 2 plus result)
Somit sind die parameter(+Result) auch nur in Mnemonics mit Register-Parametern zulässig.

Durch das strikte mapping des Input/Output sollte der compiler in der lage sein die Parameter der aufrufenden funktion vor dem inlined asm zu sichern bzw collisionen zu erkennen.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat