8.3 x87 FPU指令
8.3.1 指令简介
绝大部分浮点指令都是同步指令,即当指令返回时,功能已经完成,但有部分控制指令除了同步形式外,还有一个非同步的形式,例如状态寄存器存储指令FSTSW就有一个非同步指令FNSTSW。
其实,在这种情形下,该指令的同步形式实际上是两条指令,例如FSTSW指令实际上是:
- FWAIT
- FNSTSW
在编程(www.cppentry.com)的其他领域,有时也有非同步代码(一般称异步代码,例如Wini32 API的WriteFile接口就有异步调用方式),使用它们的主要目的是使更多的硬件设备并行,从而提高效率,但在x87 FPU编程(www.cppentry.com)中,使用非同步指令的主要目的是避免异常检查。也就是说,同步指令在功能完成即将返回之前会进行异常检查(即检查状态寄存器的异常位),如果发现有异常位被设置且控制寄存器对应的异常屏蔽位没有设置,那么将触发异常,而非同步指令不做这种检查,因此即使有异常发生而且没有被屏蔽,也不会触发异常。
【责任编辑:
董书 TEL:(010)68476606】