将寄存器值加载到 FPU 堆栈

Zim*_*mon 2 cpu x86 assembly fpu

我目前正在开发一个同时使用 CPU 和 FPU 寄存器的程序集。我的问题涉及如何将寄存器值加载到 FPU 堆栈(即 ecx)。

mov    ecx, 10d    ; Load 10 into ECX
fldpi              ; Load Pi
fild   ecx         ; This does not work, it does however for .data variables
fmul               ; Multiply
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。我正在使用 Visual Studio 2015/MASM 进行开发,使用 .386 和 .model flat、STDCALL。

最好的问候,Z

Mic*_*ael 5

你可以这样做:

mov [temp_mem],ecx
fild dword ptr [temp_mem]
Run Code Online (Sandbox Code Playgroud)

或者

push ecx
fild dword ptr [esp]
pop ecx
Run Code Online (Sandbox Code Playgroud)

或者您可以在数据部分使用常量 10:

.data
ten dd 10
.code
fild dword ptr [ten]
Run Code Online (Sandbox Code Playgroud)