#1 17-08-2013 11:12

VintProg_Pro
Registered: 17-06-2010
Posts: 153

__usercall MakeAngleAccute.

Здравствуйте, кто может подсказать как эту функцию, правильно переписывать в C++ ?



.text:00642920                                   ; float __usercall MakeAngleAccute<st0>(float val<st0>)
.text:00642920                                   MakeAngleAccute proc near               ; CODE XREF: sub_401FB0+1D2p
.text:00642920                                                                           ; sub_402550+133p
.text:00642920                                                                           ; sub_41D410+2BEp
.text:00642920                                                                           ; sub_41D410+2E4p ...
.text:00642920 000 D9 EB                                         fldpi
.text:00642922 000 D9 C9                                         fxch    st(1)
.text:00642924
.text:00642924                                   loc_642924:                             ; CODE XREF: MakeAngleAccute+14j
.text:00642924 000 D9 05 A0 D4 6D 00                             fld     fHalf_1
.text:0064292A 000 DE C9                                         fmulp   st(1), st
.text:0064292C 000 D9 F8                                         fprem
.text:0064292E 000 DF E0                                         fnstsw  ax
.text:00642930 000 66 A9 00 04                                   test    ax, 400h
.text:00642934 000 75 EE                                         jnz     short loc_642924
.text:00642936 000 DD D9                                         fstp    st(1)
.text:00642938 000 C3                                            retn
.text:00642938                                   MakeAngleAccute endp

Offline

#2 17-08-2013 16:46

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Re: __usercall MakeAngleAccute.

Напрямую - никак. Над ней очень сильно поработал оптимизатор.

сама по себе функция очень простая:

float makeAngleAccute (float fAngle) {
    return fmodf (fAnfle, M_PI_2);
}

Но, поскольку параметр передается в ST, без ассемблерной вставки, ее переопределить нельзя.

Offline

#3 17-08-2013 17:06

VintProg_Pro
Registered: 17-06-2010
Posts: 153

Re: __usercall MakeAngleAccute.

Спасибо, теперь я все понял и за чего такой вид образовался у функции.

Но, поскольку параметр передается в ST, без ассемблерной вставки, ее переопределить нельзя.

Да уж. Но если уже переписывать MakeAngleAccute, тогда обязательно придется переписывать и те функции, где она вызывалась.

Last edited by VintProg_Pro (17-08-2013 17:08)

Offline

Board footer

Powered by FluxBB