[英]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.