目前我正在这样做是为了测试 x86 程序集中的负数(r/m32,imm8):
83F800 CMP EAX, 0
接下来是 JL。这是 3 个字节,据称时钟为“1/2”。我可以使用 TEST EAX 或 CMP EAX,imm32(编码 3D),两者的时钟均为“1”,但占用 5 个字节。一般来说,如果我试图最小化代码大小,我的做法正确吗?再次,这是为了测试一个数字是否小于零。
最佳答案
add eax, eax
只有两个字节(01 C0
或03 C0
),但具有破坏性。 (事后检查是否携带)
test eax, eax
也只有两个字节 (85 C0
)。 (事后检查标志)
关于assembly - 在 x86 汇编中测试负数的最紧凑方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15453755/