单指令 代码片段的替代项


以下

代码片段的单个指令替代项是什么。我已经尝试了几个小时,但真的无法弄清楚

  1. CMP EBX,EAX JNE X1 MOV EBX,ECX JMP X2 X1: MOV EAX,EBX X2
  2. PUSHF MOV BH,FFH CMP BL,0 JL X1 NOT BH X1: POPF
  3. BT AX,15 JC X1 AND EAX,0000FFFFH JMP X2 X1: OR EAX, FFFF0000H X2:
    也请提供解释。
    谢谢
  1. 看起来像cmpxchg ebx, ecx. if (eax == ebx) ebx = ecx else eax = ebx
  2. 如果bl是负面的,则0FFh bh,否则00h。因此,这只是符号扩展,即。 movsx bx, bl
  3. 这基本上是一样的,它是通过直接测试符号位来扩展ax符号,即movsx eax, ax。但请注意,这不会影响标志,而不是代码片段。

最新更新