gpt4 book ai didi

debugging - FSTP DWORD PTR DS :[ESI+1224] do? 是什么意思

转载 作者:行者123 更新时间:2023-12-02 23:17:37 26 4
gpt4 key购买 nike

我正在尝试了解更多有关汇编和反汇编的知识。我的目标是修改使用调试器(olly)写入特定地址的方式。最好通过将其增加一个数字(20、50 等),我可以识别 float 的地址(在本例中位于 33B7420C)。

当我在内存访问写入上设置断点时,它会将我带到 00809B2E,其中包含以下程序集:

FSTP DWORD PTR DS:[ESI+1224]

这个地址到底在做什么?我知道 FPU 寄存器有我正在寻找的号码,但不确定这些地址的用途。

我最接近谷歌搜索的是: What does MOV EAX, DWORD PTR DS:[ESI] mean and what does it do?

寄存器的副本显示以下内容:

EAX 00000000
ECX 00A16E40 EZ.00A16E40
EDX FFFFFFFF
EBX 33B74578
ESP 0018FA90
EBP 00000000
ESI 33B72FE8
EDI 33B74578
EIP 00809B2E <EZ.Breakpoint for time>
C 0 ES 002B 32bit 0(FFFFFFFF)
P 0 CS 0023 32bit 0(FFFFFFFF)
A 0 SS 002B 32bit 0(FFFFFFFF)
Z 0 DS 002B 32bit 0(FFFFFFFF)
S 0 FS 0053 32bit 7EFDD000(FFF)
T 0 GS 002B 32bit 0(FFFFFFFF)
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00210202 (NO,NB,NE,A,NS,PO,GE,G)
ST0 valid 1150.0000000000000000
ST1 zero 0.0
ST2 zero 0.0
ST3 empty 64.951911926269531250
ST4 empty -13.250000000000000000
ST5 empty 64.951911926269531250
ST6 empty 64.951911926269531250
ST7 empty 0.0239995196461677551
3 2 1 0 E S P U O Z D I
FST 2927 Cond 0 0 0 1 Err 0 0 1 0 0 1 1 1 (LT)
FCW 027F Prec NEAR,53 Mask 1 1 1 1 1 1

如有任何帮助,我们将不胜感激,谢谢!

最佳答案

FSTP将浮点寄存器堆栈顶部 ( ST0 ) 的 float 存储到指定的内存区域。使用DWORD修饰符意味着将写入 32 位 float 。 P后缀表示操作完成后将弹出浮点寄存器堆栈。

因此,实际上,该指令将 1150.0 (作为 32 位 float )位于 DS:[ESI+1224] ,然后弹出寄存器堆栈(这会导致 ST0 = 0.0ST1 = 0.0ST2 = <empty> 等)。

关于debugging - FSTP DWORD PTR DS :[ESI+1224] do? 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12134934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com