Gleitkommadivision im Inline-Assembler
Hallo,
ich überlege ein Programm von mir mit dem Assembler zu optimieren. Assemblerprogrammierung beherrsche ich grundlegend, allerdings habe ich bis jetzt noch nichts mit Gleitkommawerten gemacht. --> Lohnt es sich überhaupt eine Divisionsfunktion dafür zu schreiben oder kann man da keine Zeit sparen? Falls es sich lohnt würde ich mich über Ansätze/Beispiele/Links freuen. Vielen Dank schonmal, everdream :cyclops: |
Re: Gleitkommadivision im Inline-Assembler
Bei einer einfachen Division kannst du nichts optimieren. Im Gegenteil, durch den Methodenaufruf wird das ganze sogar langsamer, als wie wenn du einfach den Compiler das machen lässt, was er am besten kann.
|
Re: Gleitkommadivision im Inline-Assembler
Okay, dann werd' ich den Algorithmus wohl erstmal so lassen. Vielen Dank für die Info!
|
Re: Gleitkommadivision im Inline-Assembler
Doch nochmal ne Frage... :roll:
Zitat:
|
Re: Gleitkommadivision im Inline-Assembler
Auch dann kannst du keine Verbesserung gegenüber dem Compiler erreichen.
|
Re: Gleitkommadivision im Inline-Assembler
der Compiler über auch nur die Varible/Zahl an due Fließkommaeinheit (FPU) und läßt diese rechnen
da kannst du nichts verbessern, oder was willst du denn da sonst machen? |
Re: Gleitkommadivision im Inline-Assembler
Hab mir noch nich viele Gedanken drüber gemacht wie genaus das dann aussehen soll, aber meißtens sind asm berechnungen doch schneller, oder irre ich mich da?
|
Re: Gleitkommadivision im Inline-Assembler
Mit 3DNow! bzw. SSE kannst du deine Fließkommaberechnungen sicherlich etwas beschleunigen, wenn du die Eigenheiten dieser Befehlssätze ausnutzen kannst. Ansonsten ist eine Assembly-Berechnung keineswegs unbedingt schneller und bei Berechnungen, die sich nicht parallelisieren lassen, helfen dir auch SSE und Co. nicht.
|
Re: Gleitkommadivision im Inline-Assembler
Delphi wandelt deinen Pascal-Code auch in ASM-Code um und Delphi kennt ganz viele Optimierungen.
Delphi-Quellcode:
da geht nicht's mehr schneller ;)
r3 := r1 / r2;
asm fld &r1 // r1 > FPU-Register fdiv &r2 // FPU-Register := FPU-Register / r2 fstp &r3 // FPU-Register > r3 wait // warten bis FPU fertig mit rechnen ist end; und Delphi macht es schon so (abgesehn wenn die Variablen noch irgendwohergeladen werden müssen, aber da mußt du es ja auch anders machen) |
Re: Gleitkommadivision im Inline-Assembler
Beim Inline -ssembler stehen mir doch die aktuell gültigen delphi-variablen zur verfügung, oder hab ich da was falsch verstanden? Das würde ja heißen, dass ich die variablen eben nicht extra irgendwo her laden müsste...
Naja, jedenfalls gabt ihr mich davon überzeugt, dass sich in meinem fall eine optimierung per asm wohl nicht lohnt. Danke nochmal für die Antworten! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz