汇编速查-FPU
来源:互联网 发布:淘宝装修设计师模块 编辑:程序博客网 时间:2024/06/07 11:43
x87 FPU的寄存器
浮点值传入FPU寄存器栈顶
fld source
fild把整数传入FPU寄存器
ffbld把bcd数据传入FPU寄存器
source可以是32bit/64bit/80bit内存位置
.float创建单精度浮点值 flds float_val
.double创建双精度浮点值 fldl double_val
FPU寄存器栈顶值放到内存位置
fsts/fstl des
fstp指令吧FPU寄存器st0的值复制到内存位置,并将值从堆栈中弹出
使用预置的浮点值
状态寄存器和控制寄存器
FPU独立于主处理器,所以一般不使用EFLAGS寄存器表示结果和确定行为。FPU有自己的寄存器组织,状态寄存器、控制寄存器和标记寄存器用于存取FPU的特性和确定FPU的状态
1. 状态寄存器 表名FPU的操作情况
前6位是异常标志。处理过程中发生浮点异常时设置它们。FPU保持他们的状态知道程序运行时清楚他们。
8个寄存器中的任何一个都可以被指派为堆栈的顶端。
FSTSW把状态寄存器读到一个双字的内存位置或者AX寄存器中
2. 控制寄存器
前6个控制使用状态寄存器中的那些异常标志位,某位置1时屏蔽该异常,默认屏蔽6个异常
精度控制
00 单精度24bit有效位
01 未使用
10 双精度53bit有效位
11 扩展双精度64bit有效位 FPU默认为扩展双精度
舍入控制
00 舍入到最近值
01 向下舍入-向负无穷
10 向上舍入-向正无穷
11 向0舍入 默认为舍入到最近值
FSTCW把控制寄存器读到一个双字的内存位置
FLDCW指令吧双字内存值加载到控制寄存器中
标记寄存器
16bit每个寄存器2bit,标识这8个80bit的FPU数据寄存器
00 包含一个合法的扩展双精度值
01 包含零值
10 特殊的浮点值
11 无内容
基本数学运算
每个指令可以有6个功能:e.g.
高级浮点运算
浮点条件分支
保存和恢复FPU状态
这些值存储在一个28字节的内存块中,FLDENV指令用于把内存块加载回FPU环境中。
数据寄存器
等待和非等待指令
优化浮点运算
- 汇编速查-FPU
- 汇编速查-内联汇编
- 8088汇编速查
- 汇编指令速查
- 汇编指令速查
- 汇编速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- 汇编指令速查
- tomcat 集群
- Struts2 JSP的标准动作<jsp:forward>无法访问Action
- 【转】取模(mod)与取余(rem)的区别——Matlab学习笔记
- sqlyog注册码激活
- 文件和文件夹的操作
- 汇编速查-FPU
- Shell面试题及企业运维实战练习1
- Python处理JSON
- Lua编程笔录--Lua初识及语法六(协同程序)
- wait_timeout和interactive_timeout区别
- log4j 级别(level)
- 安卓文件路径与有关操作
- 第十二周 oj训练 进制转换
- Hbase中内置Filter详解