当前位置: 首页 > news >正文

浮点数运算

Day 13: 浮点运算

本章介绍x87浮点单元(FPU)和SSE指令集,用于处理浮点数运算。


1. x87 FPU

1.1 FPU寄存器

FPU有8个80位寄存器:ST(0) - ST(7) 组织成栈结构,ST(0)是栈顶 数据类型: - 单精度:32位 - 双精度:64位 - 扩展精度:80位

1.2 基本指令

section .data val1 dq 3.14159 val2 dq 2.71828 result dq 0.0 section .text ; 加载 fld qword [val1] ; ST(0) = val1 fld qword [val2] ; ST(0) = val2, ST(1) = val1 ; 运算 fadd ; ST(0) = ST(0) + ST(1) fsub ; ST(0) = ST(0) - ST(1) fmul ; ST(0) = ST(0) * ST(1) fdiv ; ST(0) = ST(0) / ST(1) ; 存储 fstp qword [result] ; result = ST(0), 弹出 ; 常量 fldz ; ST(0) = 0.0 fld1 ; ST(0) = 1.0 fldpi ; ST(0) = π

2. SSE指令

2.1 SSE寄存器

XMM0 - XMM7 (x86) XMM0 - XMM15 (x64) 每个128位,可存储: - 4个单精度浮点数 - 2个双精度浮点数 - 16个字节

2.2 基本SSE指令

section .data align 16 val1 dd 1.0, 2.0, 3.0, 4.0 val2 dd 5.0, 6.0, 7.0, 8.0 section .text ; 加载 movaps xmm0, [val1] ; 加载4个float movaps xmm1, [val2] ; 运算(打包,4个同时) addps xmm0, xmm1 ; 4个float相加 mulps xmm0, xmm1 ; 4个float相乘 ; 标量运算 movss xmm0, [val1] ; 加载1个float addss xmm0, [val2] ; 1个float相加 ; 存储 movaps [result], xmm0

2.3 SSE2双精度

movapd xmm0, [dval1] ; 2个double addpd xmm0, [dval2] movsd xmm0, [dval1] ; 1个double addsd xmm0, [dval2]

3. AVX指令

; AVX使用256位YMM寄存器 vmovaps ymm0, [data] ; 8个float vaddps ymm0, ymm0, ymm1 ; 8个float相加 ; AVX-512使用512位ZMM寄存器

4. 浮点比较

; SSE比较 comiss xmm0, xmm1 ; 比较单精度 comisd xmm0, xmm1 ; 比较双精度 ; 设置EFLAGS ja greater ; 无符号比较后跳转

5. 小结

[x87 FPU] 1. ST(0)-ST(7)栈结构 2. fld加载,fstp存储 3. fadd/fsub/fmul/fdiv [SSE] 4. XMM寄存器128位 5. 打包操作(*ps) 6. 标量操作(*ss) [AVX] 7. YMM寄存器256位 8. 更高性能

下一篇预告:Day 14 - 内联汇编


http://www.jsqmd.com/news/377668/

相关文章:

  • 【python毕设源码分享】基于Python的协同过滤算法的天气穿搭推荐系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 赶deadline必备! 10个AI论文网站深度测评,继续教育毕业论文写作全攻略
  • YOLOv8眼睛状态检测:基于AFPNet-P345的睡意监测系统_1
  • 【python毕设源码分享】基于Flask和Vue的电商管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 打家劫舍问题的动态规划解法与性能优化笔记
  • 基于SpringBoot+协同过滤推荐算法+智能AI问答的水果线上交易平台开题报告
  • go mapstructure使用例子
  • 硬币找零问题的动态规划解法与实现思考笔记
  • TPJ系列机械式螺旋圆弹簧疲劳试验机
  • 2026年市场评价好的包装袋定制厂家选哪家,四边封包装袋/自立袋/聚酯尼龙袋/三边封拉链袋,包装袋制造厂家推荐排行 - 品牌推荐师
  • 【Python毕设全套源码+文档】基于python的媒体资源管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 『NAS』设置内网固定 IP
  • 教你如何识别台式电脑电源的好坏
  • 【Python毕设全套源码+文档】基于python的采用人脸识别技术的课堂考勤管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 面试必看:打家劫舍
  • 2026年工业研学公司综合评测:聚焦科创实践与产教融合的新趋势​ - 品牌2025
  • 【Python毕设全套源码+文档】基于python的租房管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 56周作业
  • 2026年工业焊接协作机器人知名品牌商选择指南,推荐上海广为 - 品牌2025
  • comsol多孔介质流燃烧器模型,集层流流动模块,流体传热模块,浓物质传递模块和化学反应模块于...
  • 50.k8s管理-1和 k8s核心概述-2 - 实践
  • 【Python毕设全套源码+文档】基于python的个人身心健康管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 2026年全国防爆墙厂家哪家靠谱?靠谱优质实力强劲 适配多场景防护需求 覆盖全国多区域需求 - 深度智识库
  • 车桥耦合Matlab程序:Newmark法数值积分实现动力学求解
  • AT_agc013_d [AGC013D] Piling Up
  • 2026年汽车应急启动电源十大品牌推荐深度解析 - 品牌2025
  • 那些年我们create generate clock遇到的坑
  • 武商一卡通使用与回收:超实用指南让你轻松搞定 - 团团收购物卡回收
  • 2026年优选五大汽车电瓶设备公司选择指南 - 品牌2025
  • 2026年汽车电瓶设备出口公司推荐:全球市场中的中国智造力量 - 品牌2025