繁体   English   中英

最简洁的方法来测试x86汇编中的负数?

[英]Most compact way to test for a negative number in x86 assembly?

目前我这样做是为了测试x86程序集中的负数(r / m32,imm8):

83F800 CMP EAX, 0

接下来是JL。 这是3个字节,据说时钟为“1/2”。 我可以使用TEST EAX,或CMP EAX,imm32(编码3D),两者的时钟均为“1”,但需要5个字节。 一般来说,如果我试图最小化代码大小,我的方式是正确的吗? 再次,这是测试一个数字是否小于零。

您可以使用:

or      eax, eax

它是一个字节短(只有两个字节操作码)指令!

add eax, eax只有两个字节( 01 C003 C0 ),但具有破坏性。 (事后检查随身携带)

test eax, eax也只有两个字节( 85 C0 )。 (之后检查标志)

暂无
暂无

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

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