assembly 在x86程序集中测试负数的最紧凑方法?

xxslljrj  于 2022-12-19  发布在  其他
关注(0)|答案(2)|浏览(147)

目前我这样做是为了测试x86汇编(r/m32,imm 8)中的负数:

83F800 CMP EAX, 0

这可以跟在JL后面。这是3个字节,假设时钟为“1/2”。我可以使用TEST EAX,或CMP EAX,imm 32(编码3D),这两个时钟都为“1”,但需要5个字节。一般来说,如果我试图最小化代码大小,我这样做是正确的吗?再次,这是为了测试一个数字是否小于零。

bjg7j2ky

bjg7j2ky1#

add eax, eax只有两个字节(01 C003 C0),但具有破坏性。(随后检查进位)
test eax, eax也只有两个字节(85 C0)。(之后检查符号)

thigvfpy

thigvfpy2#

您可以使用:

or      eax, eax

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

相关问题