逆向工程学习笔记(2):出发--DegToRad

分析之路先从一个最简单的角度转弧度函数开始:

; double __stdcall DegToRad(double)

0x40002040    fld qword [sym.D_PI]

0x40002046    fmul qword [esp + 4]

0x4000204A    fmul qword [0x40003050]

0x40002050    ret 8

很简单的一个函数。

 

先百度下FPU:

浮点运算器(英文:floating point unit,简称FPU)是计算机系统的一部分,它是专门用来进行浮点数运算的。典型的运算有加减乘除和开方。一些系统(尤其是比较老的,基于微代码体系的)还可以计算超越函数,例如指数函数或者三角函数,尽管对大多数现在的处理器,这些功能都由软件的函数库完成。

在大多数现在的通用计算机架构中,一个或多个浮点运算器会被集成在CPU(Central Processing Unit,中央处理器)中,但许多嵌入式处理器(特别是比较老的)没有在硬件上支持浮点数运算。

在过去,一些系统通过协同处理器而不在同一个处理器中来处理浮点数。在微型计算机时代,这一般只用一个芯片;而在以前,可能要用一整个电路板甚至一台机箱。

不是所有的计算机架构中都有硬件的浮点运算器。在没有硬件浮点运算器的情况下,许多浮点数的运算也可以像有硬件那样做到。这样可以节省浮点运算器的硬件成本,但这样会使计算变得慢得多。仿硬件浮点运算可以通过多种层次的方法实现——在CPU中用微代码处理,用操作系统的函数处理,用用户自己的代码处理。

在大多数现代计算机的架构中,一些浮点数运算跟整数运算是分开的。这些分别在不同的架构上差别很大。有一些架构,例如英特尔(Intel)的x86处理器设计了浮点数寄存器,另一些架构中,处理浮点数甚至有独立的时频时域。

当CPU执行一个需要浮点数运算的程序时,有三种方式可以执行:软件仿真器(浮点运算函数库)、附加浮点运算器和集成浮点运算器。多数现在的计算机有集成的浮点运算器硬件。

 

X86是有FPU的。

在这几行代码中,出现了3条FPU指令,一条RET指令。

 

接下来研究下具体的FPU指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值