`
dogasshole
  • 浏览: 839197 次
文章分类
社区版块
存档分类
最新评论

Linux下汇编学习笔记之三--(Professional Assembly Language)

 
阅读更多

笔记之三主要介绍协处理器FPU

以前每次碰到浮点指令的时候,头就大了。可这一次就不同了,越看越简单,哇,太开心了。。。

1、FPU与标准处理器寄存器分离的一组寄存器处理浮点操作,即FPU与我们通常概念中的中央处理器是独立的。FPU包括8个80位数据寄存器和3个16位寄存器,称为控制、状态和标记寄存器。FPU的数据寄存器R0到R7构成循环堆栈。(第一次遇到循环堆栈这种数据结构)

2、状态寄存器fstat 默认值是0x0000

位0 :非法操作异常标志
位1 :非规格化操作数异常标志
位2 :除数为零异常标志
位3 :溢出异常标志
位4 :下溢异常标志
位5 :精度异常标志
位6:堆栈错误
位7:错误汇总状态
位8:条件代码位0(c0)
位9:条件代码位1(c1)
位10:条件代码位2(c2)
位11位12位13:堆栈顶部指针
位14:条件代码位3(c3)
位15:FPU繁忙标志

使用fstsw把fstat读到一个双字节内存或AX中。

3、控制寄存器 fctrl

位0 :非法操作异常掩码
位1 :非规格化操作数异常掩码
位2 :除数为零异常掩码
位3 :溢出异常掩码
位4 :下溢异常掩码
位5 :精度异常掩码
位6位7:保留
位8位9:精度控制(00单精度10双精度11扩展双精度)
位10位11:舍入控制(00最近值01向下舍入10向上舍入11向零舍入)
位12:无穷大控制
位13位14位15:保留

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics