Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在fasm中如何比较两个四字?_Assembly_X86_Fasm - Fatal编程技术网

Assembly 在fasm中如何比较两个四字?

Assembly 在fasm中如何比较两个四字?,assembly,x86,fasm,Assembly,X86,Fasm,我需要检查一个四字不小于零 我将它们存储在MMX寄存器中: movq mm0, [inputNum] movq mm1, [zero] 但我找不到在mmx或sse中比较两个qwords的说明。。。有办法做到这一点吗?这是32位代码还是64位代码?您正在尝试将QWORD 64位整数与0或浮点数与0.0进行比较吗?如果这是32位代码,并且如果inputNum是64位(QWORD)有符号整数,那么要测试它是否为负,您需要做的就是加载inputNum

我需要检查一个四字不小于零

我将它们存储在MMX寄存器中:

 movq mm0, [inputNum]
 movq mm1, [zero]
                       

但我找不到在mmx或sse中比较两个qwords的说明。。。有办法做到这一点吗?

这是32位代码还是64位代码?您正在尝试将QWORD 64位整数与0或浮点数与0.0进行比较吗?如果这是32位代码,并且如果
inputNum
是64位(QWORD)有符号整数,那么要测试它是否为负,您需要做的就是加载
inputNum
的上4个字节(
[inputNum+4]
)输入寄存器并测试最高位(位31)是否为0。如果为0,则该值大于等于0。如果为1,则该值为负值。四字中最上面的一位是符号位。我已经猜出来了,谢谢!存在但需要SSE4.2,并且仅支持XMM REG,而不支持旧版MMX。但幸运的是,正如迈克尔·佩奇所指出的,你只需要检查符号位;其余的位与此无关,不需要加载。e、 g.
测试字节[inputNum+7],0x80根据内存中整个qword的MSB将ZF和SF设置为所需的条件。或
cmp
0
相对。或者,如果您想在regs中使用这两个部分,而不是编写可以简单地将qword加载到RAX中的64位代码,那么只需将这两个部分加载到32位寄存器中即可。