不改变x87寄存器进行十进制除法

时间:2014-03-03 20:59:58

标签: c x86 division cpu-registers

我处于一种奇怪的境地,我已将自己编入,陷入困境!我正在编写一个操作系统课程,我们正在编写一个非抢占式调度程序,我需要在上下文切换中对时间测量进行一些简单的计算。

对于我的平均计算,我需要使用小数除法,我的代码现在从汇编程序调用C函数进行计算并将结果打印到屏幕,此C函数使用 double ,稍后我意识到 double 除法将导致x87寄存器的更改,因为 get_time (C函数)函数在上下文切换之前和之后立即调用。有没有办法进行十进制除法以避免更改x87寄存器?我非常需要一些提示和帮助。

1 个答案:

答案 0 :(得分:0)

我在asm和register使用方面没有太多技巧,但可能:

  • 如果你推动你的注册并在最后弹出它会怎么样?
  • 你说双分区改为x87寄存器,float怎么办?