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