Betonac
Artikelen: 0
Berichten: 26
Lid geworden op: zo 24 dec 2006, 01:34

Trunc en round

Hoe kan ik de functies trunc end round van C implementeren in asm ?
Gebruikersavatar
Rogier
Artikelen: 0
Berichten: 5.679
Lid geworden op: di 27 apr 2004, 13:40

Re: Trunc en round

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

Code: Selecteer alles

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.
Betonac
Artikelen: 0
Berichten: 26
Lid geworden op: zo 24 dec 2006, 01:34

Re: Trunc en round

Hartelijk dank. :D

Terug naar “Informatica en programmeren”