簡體   English   中英

如何將常量值加載到浮點寄存器st0中?

[英]How can I load a constant value into the floating point register st0?

我相信這樣做的正確方法如下:

const1:     dq  1.2345
...
     fld    const1

但是,我正在使用Cheat Engine對游戲進行逆向工程(所以我可以更好地理解它)。 它顯示以下錯誤:

作弊引擎顯示恆定值無法加載

有人可以告訴我這里有什么問題嗎? 理想情況下,我希望第二個命令是:

fstp dword [esi+ 3C]

但在我這樣做之前,我需要將93.5值加載到st(0)寄存器中。 我怎樣才能做到這一點?

有一系列語法相關的錯誤導致您的問題。

“此指令無法編譯”您將數據放入代碼部分。 在newmem塊之外和單獨的內存塊內定義變量。 您正嘗試使用“val:”定義內存塊,但尚未分配該內存。 如果不注冊符號,也無法引用它。

要定義常規浮點數,可以使用4字節變量而不是8字節變量,因此使用“dd”而非“dq”,其次需要將其“轉換”為浮點數。

您希望將浮點數推入FPU堆棧的指令如下所示:fld dword ptr [val]

像以前一樣創建注入模板,然后在頂部插入此代碼並繼續您正在做的事情,它包含我在答案中記下的所有內容,並且我測試了它的工作原理:

alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

alloc(val,8)

val:
dd (float)93.5

registersymbol(val)

newmem:
fld dword ptr [val]

請記住,您需要使用生成的模板的其余部分,這只是修復問題中所見錯誤的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM