正在准备做一个C6678的浮点转定点函数。猛然发现SPINT等指令的执行结果居然与FADCR有关。请问用户是否必须在自己编写的函数中首先对此寄存器进行入栈操作,再设置其值,保证函数中相关指令得到所想要的结果,最后再完成出栈操作,恢复现场?这样操作后,如果遇到中断,中断中被其他函数修改FADCR且不恢复怎么办?
顺便吐槽一句,这个真是糟糕的设计。象SPTRUNC这种不管其他寄存器如何设置始终维持自己操作结果的指令才是最可靠的。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
正在准备做一个C6678的浮点转定点函数。猛然发现SPINT等指令的执行结果居然与FADCR有关。请问用户是否必须在自己编写的函数中首先对此寄存器进行入栈操作,再设置其值,保证函数中相关指令得到所想要的结果,最后再完成出栈操作,恢复现场?这样操作后,如果遇到中断,中断中被其他函数修改FADCR且不恢复怎么办?
顺便吐槽一句,这个真是糟糕的设计。象SPTRUNC这种不管其他寄存器如何设置始终维持自己操作结果的指令才是最可靠的。
使用时一般不需要修改过FADCR,除非你想改变rounding的方式,但一般实际使用中没有这么做的。