1 van 1

Trunc en round

Geplaatst: di 10 feb 2009, 21:27
door Betonac
Hoe kan ik de functies trunc end round van C implementeren in asm ?

Re: Trunc en round

Geplaatst: wo 11 feb 2009, 02:14
door Rogier
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.

Re: Trunc en round

Geplaatst: wo 11 feb 2009, 10:15
door Betonac
Hartelijk dank. :D