Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global _uberpow
- section .code use32
- _uberpow:
- ; argumenty:
- ; podstawa w [esp + 4] (float)
- ; wykladnik w [esp + 8] (int)
- ; zwracana wartość w st0
- mov eax, [esp + 8]
- fld dword [esp + 4]
- .internal_begin:
- test eax, eax
- jl .when_less
- cmp eax, 10
- jg .when_more
- jmp [.calltable + eax * 4]
- .when_less:
- neg eax
- call .internal_begin
- fld1
- fdivr
- ret
- .calltable:
- dd .when0
- dd .when1
- dd .when2
- dd .when3
- dd .when4
- dd .when5
- dd .when6
- dd .when7
- dd .when8
- dd .when9
- dd .when10
- .when0:
- fstp st0
- fld1
- ret
- .when1:
- ret
- .when2:
- fld st0
- fmul
- ret
- .when3:
- fld st0
- fld st0
- fmul
- fmul
- ret
- .when4:
- fld st0
- fmul
- fld st0
- fmul
- ret
- .when5:
- fld st0
- fld st0
- fmul
- fld st0
- fmul
- fmul
- ret
- .when6:
- fld st0
- fmul
- fld st0
- fld st0
- fmul
- fmul
- ret
- .when7:
- fld st0
- fld st0
- fld st0
- fld st0
- fmul
- fmul
- fld st0
- fmul
- fmul
- ret
- .when8:
- fld st0
- fmul
- fld st0
- fmul
- fld st0
- fmul
- ret
- .when9:
- fld st0
- fld st0
- fmul
- fmul
- fld st0
- fld st0
- fmul
- fmul
- ret
- .when10:
- fld st0
- fmul
- fld st0
- fld st0
- fmul
- fld st0
- fmul
- fmul
- ret
- .when_more:
- fld1
- fxch st1
- fyl2x
- fild dword [esp + 8]
- fmulp st1, st0
- fst st1
- frndint
- fld1
- fscale
- fxch st1
- fsubr st0, st2
- f2xm1
- fld1
- faddp st1, st0
- fmulp st1, st0
- fstp st1
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement