Springen naar inhoud

Trunc en round


  • Log in om te kunnen reageren

#1

Betonac

    Betonac


  • >25 berichten
  • 26 berichten
  • Gebruiker

Geplaatst op 10 februari 2009 - 21:27

Hoe kan ik de functies trunc end round van C implementeren in asm ?

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 11 februari 2009 - 02:14

Ik neem aan dat je x86 asm bedoelt, in dat geval, met de instructie fist (of fistp) :

fldpi	  ; st(0) = pi
fistp [x]  ; x bevat nu 3 (als int)

Deze doet trunc of round, afhankelijk van de rounding mode van je FPU. Die kun je veranderen in het FPU status word, met fstcw en fldcw.

Als het alleen op processors met SSE2 hoeft te werken (praktisch alle Intel en AMD cpu's die je vandaag de dag in de praktijk tegenkomt) kun je ook cvtss2si en cvtsd2si gebruiken (voor float resp. double), of cvtpd2pi om er zelfs twee tegelijk te doen. Zijn ook cvtt- varianten van die altijd trunc doen.
In theory, there's no difference between theory and practice. In practice, there is.

#3

Betonac

    Betonac


  • >25 berichten
  • 26 berichten
  • Gebruiker

Geplaatst op 11 februari 2009 - 10:15

Hartelijk dank. :D





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures