[ASM] potęgowanie dwójki w FPU

0

Mam taki problem:
Chcę w jakiś szybki sposób wykonać w koprocesorze 2^X gdzie X należy do liczb rzeczywistych.
Poradziłem sobie z tym samemu w ten sposób:

FST		ST(1)            ;w ST wykładnik
FRNDINT                                       ;w ST wykladnik zaokrąglony w dół

FLD1                                             ;w ST 1
FSCALE                                         ;w ST dwójka podniesiona do potęgi ST(1)

FXCH		ST(1)            ;w ST "obcięty" wykładnik
FSUBR		ST, ST(3)      ;w ST część "po przecinku" wykładnika

F2XM1                                          ;w ST 2 do potęgi z poprzedniej wartości ST -1
FLD1                                            ;\
FADDP                                         ;/ w ST to samo, tylko, że bez tego "-1"

FMULP                                          ;w ST wynik (2^1.2 = 2^1*2^0.2)

Mam nadzieję, że opisy dopisałem na pot<ort>żeby</ort> tego posta w miarę jasno.
Ten sposób działa, ale jest trochę "nieelegancki" ;)
Od niedawna (w zasadzie - to mój pierwszy program ;) ) piszę z wykorzystaniem FPU i nie mam dużego doświadczenia, więc nie śmiejcie się ze mnie :] . A może można zrobić coś takiego jak SHL? Tylko jak??
Pozdrawiam
V-tec

0

AFAIK to nie ma. fscale to już jest taki shl. Ale dla ułamkowych to jak z divem :)

0

No trudno :(
Ale to jest trochę wolne... :(
Może ktoś ma szybszą procedurę?
A jak nie, to <ort>chociaŻ</ort> macie tutaj gotową do wykorzystania :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1