繁体   English   中英

我可以比较两个浮点数而不将它们加载到 x87 堆栈上吗?

[英]Can I compare two floats without loading them on the x87 stack?

对不起,基本问题。

在汇编中比较存储在不同(固定)memory 位置的两个浮点而不将它们加载到堆栈中是否可以接受? 除了 CMP 和 JLE 之外,我还需要使用任何东西吗?

例如,Memory 地址 [A] 当前等于 95,memory 地址 [B] 当前等于 [90]。 如果 [A] 小于或等于 90,我想跳转。以下是否足够?

CMP DWORD PTR [A], CMP DWORD PTR [B]
JLE [Another address]

如果两个浮点数都是正数,并且你不关心像 NAN 这样的问题:

        mov     eax,[a]
        cmp     eax,[b]
        jbe     ...

如果任一浮点数可以为负,但不能为负零 (080000000h):

        mov     eax,[a]
        cmp     eax,[b]
        mov     ecx,eax
        sar     ecx,31
        or      ecx,080000000h
        xor     eax,ecx
        mov     ecx,ebx
        sar     ecx,31
        or      ecx,080000000h
        xor     ebx,ecx
        cmp     eax,ebx
        jbe     ...

负 0 将以 07fffffffh 结尾,小于以 080000000h 结尾的正 0。 如果这是一个问题,则需要修改代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM