Aktív témák

  • P.H.

    senior tag

    válasz #95904256 #40 üzenetére

    Csak egy egyszerű példa: egyszer nézz bele, hogy egy Delphi hogy oldja ezt (truncate float -> int; Delphiben trunc() ) :)

    fld dword ptr [value]
    call @TRUNC
    ...

    @TRUNC:
    sub esp,0Ch
    fstcw word ptr [esp+00h]
    fldcw word ptr [cwChop]
    fistp word ptr [esp+04h]
    fldcw word ptr [esp+00h]
    pop ecx
    pop eax
    pop edx
    ret

    Ez mindennapos. Egy 1000-es nagyságrendű, trunc() eljárást hívó ciklus vagy sima rutin esetén is ez van. Nem adna gyorsabb kódot ezt egy InitTrunc() (fstcw+fldcw) - 1000-es ciklus (fld - fistp) vagy rutin - EndTrunc() (fldcw) három makróval megoldani?
    Tudom, van Set8087CW Delphi-ben. Vajon megváltozik ettől a trunc() működése?

    Persze itt nem erről beszélünk, ez az Opt. Manual-ok témája inkább.

    [ Szerkesztve ]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

Aktív témák