# An example of basic FPU math
#
# 基本浮点运算
#
# FADD        浮点加法
# FDIV        浮点除法
# FDIVR        反向浮点除法
# FMUL        浮点乘法
# FSUB        浮点减法
# FSUBR        反向浮点减法
#
# 每一个都具有单独的指令和格式,可以生成6个可能的功能,取决于执行的确切操作是什么。
#
# FADD source        # 内存中的32位或者64位值和ST0相加
# FADD %st(x), %st(0)    # st(x) 和 st(0) 相加,结果存储到st(0)中
# FADDP %st(0), %st(x)    # st(0) 和 st(x) 相加,结果存储到st(x)中,并且弹出st(0)
#
# 操作完成后如何处理寄存器(要么保留,要么弹出堆栈)。跟踪FPU寄存器值的状态很重要。
# 有时候复杂的数学操作会执行多个操作,这些操作把各种值存储到不同的寄存器中,这时跟踪状态是困难的。
#
#
# ((43.65  / 22) + (76.34 * 3.1)) / ((12.43 * 6) - (140.2 / 94.21))
#
#

.section .data
value1:
    .float 43.65
value2:
    .int 22
value3:
    .float 76.34
value4:
    .float 3.1
value5:
    .float 12.43
value6:
    .int 6
value7:
    .float 140.2
value8:
    .float 94.21
output:
    .asciz "The result is %f\n"

.section .text
    .globl main
main:
    nop
    finit
    flds value1
    fidiv value2
    flds value3
    flds value4
    fmul %st(1), %st(0)
    fadd %st(2), %st(0)
    flds value5
    fimul value6
    flds value7
    flds value8
    fdivrp
    fsubr %st(1), %st(0)
    fdivr %st(2), %st(0)
    subl $8, %esp
    fstpl (%esp)
    push $output
    call printf
    add $12, %esp
    push $0
    call exit

# gcc -g -o 04 04-fpmath.s -m32
#
# The result is 3.264907
#

Intel汇编-基本浮点运算相关推荐

  1. linux ATT汇编 与 Intel汇编 语法格式对比

    由于绝大多数的国内程序员以前只接触过Intel格式的汇编语言,很少或几乎没有接触过AT&T汇编语言,虽然这些汇编代码都是Intel风格的.但在Unix和Linux系统中,更多采用的还是AT&a ...

  2. 一步步编写操作系统 78 intel汇编与ATT汇编语法区别

    本节咱们介绍下intel汇编语法和at&t汇编语法的区别. 以上表中未列出这两种语法在内存寻址方面的差异,个人觉得区别还是很大的,下面单独说说. 在Intel语法中,立即数就是普通的数字,如果 ...

  3. ATT与Intel汇编代码格式

    ATT(根据"AT&T"命名的,AT&T是运营贝尔实验室多年的公司)格式汇编代码,是GCC.OBJDUMP和其他一些工具的默认格式.其他一些编程工具,包括Micro ...

  4. ATT和Intel汇编杂谈

    作者:小安 博客地址:我的博客 今天,我们来梳理一下这常见的x86/x64平台下汇编语言的格式. 前言 一个高级语言写的程序会编译为二进制文件,但是其中有一个步骤是反汇编,这也是人们所能可以理解最底层 ...

  5. Intel汇编程序设计-高级过程(上)

    第八章 高级过程 8.1 简介 本章主要讲: 堆栈框架 变量作用域和生存期 对战参数的类型 通过传递值或者传递引用来传递参数 在堆栈上创建和初始化局部变量 递归 编写多模块程序 内存模型和语言关键字 ...

  6. Intel汇编程序设计-整数算术指令(下)

    7.5  扩展加法和减法 扩展精度的假发和减法是指任意尺寸大小数字的加法和减法.例如要求你写一个C++程序,把两个1024位的整数相加,解决方案可不是那么简单!但在汇编语言中,ADC(带进位加)指令和 ...

  7. Intel汇编程序设计-整数算术指令(上)

    第七章 整数算术指令 7.1 简介 每种汇编语言都有进行操作数移位的指令,移位和循环移位指令在控制硬件设备.加密数据,以及实现高速的图形操作时特别有用.本章讲述如何进行移位和循环移位操作以及如何使用移 ...

  8. intel 汇编中断解释

    汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序.使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用. 显示服务 (Video Service: ...

  9. 【Intel汇编指令集】寄存器

    目录 1.通用寄存器 2.段寄存器 3.标志寄存器 4.指令指针寄存器 5.浮点寄存器 6.MMX寄存器. 7.XMM寄存器 8.YMM寄存器 9.ZMM寄存器 指令集手册下载:Intel® 64 a ...

最新文章

  1. 大哥大——传呼机的年代
  2. C#字符串格式化说明(String.Format) (zz.IS2120)
  3. 牛客(35)数组中的逆序对
  4. modnet是一个无需绿幕,扣人像,笔记本上跑到10-20帧
  5. id 重启event_windows 2003 R2 系统自动重启了. event ID 6008
  6. 读书笔记——计算机组成原理
  7. 势高,则围广:TiDB 的架构演进哲学
  8. iOS开发第三方篇——友盟的哪些坑
  9. 算法竞赛入门经典 aabb
  10. 学习总结5.0 Linux tar打包命令
  11. 计算机考研复试经典考题汇总(一次刷新世界观)
  12. react学习的一些网站
  13. ffmpeg添加mpeg ps流的pcm的解码支持
  14. 关于U盘中毒,文件全变成快捷方式
  15. JS前端数据多条件筛选
  16. 当@PathVariable遇上了.
  17. traits简单介绍
  18. 计算机德育教育课题,德育教育研究课题有哪些研究方向
  19. Windows Server 2008 R2版本区分
  20. 微信小程序自定义组件开发即组件间通信详解

热门文章

  1. 毛哥的快乐生活(20) 使用Servlet打造多版本通知网站
  2. Spark Stream 流式处理
  3. 别再用 System.currentTimeMillis 统计耗时了,太 Low,试试 Spring Boot 源码在用的 StopWatch吧,够优雅
  4. 【自然语言处理】聊聊曝光误差(Exposure Bias)怎么被解决的
  5. JS 中 valueOf() 方法的详解
  6. 华清远见重庆中心—JAVA高级技术总结/个人总结
  7. 读《大型多人在线游戏开发》笔记
  8. 【用户画像】Clickhouse位图函数实践总结
  9. 用ObjectArx进行CAD二次开发的准备工作
  10. Word批量设置表格宽度自动适应页面宽度