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

问题描述 投票:0回答:1

对基本问题的理解。

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

e.g。内存地址[A]当前等于95,内存地址[B]等于[90]。如果[a]小于或等于90,我想跳起来。以下是足够的吗?

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

	
assembly x86 floating-point
1个回答
2
投票

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

如果任何一个浮点都可能为负,但不能为负零(080000000H):

mov eax,[a] mov ebx,[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将最终获得07FFFFFF,小于正0,最终08000000000H。如果这是一个问题,则需要修改代码。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.