汇编下浮点数有关计算

这篇博客通过一个CTF题目,详细介绍了在汇编中处理浮点数的运算,包括fild(整数转长双精度浮点数)、fidiv(浮点数除法)、fsubp(浮点数减法)、fimul(浮点数乘法)等指令的用法,并展示了相关寄存器的操作。最后提到了zf标志位在浮点数比较中的作用。
摘要由CSDN通过智能技术生成

0x01:前言

有关整数的运算在汇编中很常见,这次机缘巧合遇见了浮点数的相关运算,确实懵了一下,不过还是觉得很有必要总结一下相关知识点,下面借助一个ctf题,简单了解浮点数的相关知识。

0x02:代码参考

下面代码是直接从ida中拷贝出来的,很多汇编语句就不一一介绍了,把其中浮点数相关着重解释一下。
.call    near ptr 48CACDh
.text:00401267                 xor     ax, 7
.text:0040126B                 movsx   eax, byte ptr [ebp-1Ah]
.text:0040126F                 sub     eax, ecx
.text:00401271                 mov     [ebp-4], eax
.text:00401274                 movsx   eax, byte ptr [ebp-1Ch]
.text:00401278                 fild    dword ptr [ebp-4]
这部分代码理解起来就一些异或以及寄存器操作就不详解了fild 浮点数相关汇编指令是将整数转化为长双精FP80压栈(压到st0)

这里写图片描述

.text:0040127B                 sub     eax, ecx
.text:0040127D                 mov     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值