Assembler-code für sin(x)
Ich würde gerne Assembler-code für die Berechnung sin(x)
(mit "Taylor-Expansion") in Linux.
- habe das mal vor ein paar Jahren... nicht lustig
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde gerne Assembler-code für die Berechnung sin(x)
(mit "Taylor-Expansion") in Linux.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würde dieser Artikel Ihnen helfen?
http://www.coranac.com/2009/07/sines/
Es hat ein paar algorithmen für die Berechnung Ungefähre sin(x) - Werte mit C-und assembly-Versionen. Zugegeben, es ist ARM assembly, aber das wesentliche übersetzen sollten leicht zu x86 oder ähnliches.
Ihnen nicht Zustand, den die CPU-Architektur, so gehe ich davon aus x86.
Dem einfachsten (und möglicherweise ineffizient) Weg wäre das schreiben der Formel in RPN, die zugeordnet werden können, fast direkt an FPU-Anweisungen.
Beispiel,
algebraische Formel : x - (x^3/3!) + (x^5/5!)
RPN : x x x * x x * 3 2 * /- x x * x * x * x * 5 4 * 3 * 2 * /+
wird :
Gibt es einige offensichtliche Optimierung-Strategien -
xxxxx etc für jeden Begriff, speichern
'running-Produkt und einfach multiplizieren
durch x*x x jedes mal, wenn
die Berechnung der Fakultät für die einzelnen
Begriff, das gleiche zu tun "running Produkt"
Hier einige kommentierte code für x86-FPU, die Kommentare nach jedem FPU-Instruktion zeigen, der stack den Zustand nach, dass die Anweisung ausgeführt wurde, mit dem stack top (st0) auf der linken Seite, z.B. :
--snip--
ausführen des Programms :
Warum? Es ist schon ein FCOS und FSIN opcode seit dem 80387 (circa 1987) Prozessor
Quelle:
http://ref.x86asm.net/coder32.html
Wikipedia
Persönlicher Freund von demo-Szene