【问题标题】:Test opcode ASM complication测试操作码 ASM 复杂性
【发布时间】:2013-08-29 15:36:15
【问题描述】:

我在ollydbg中遇到了这样的一行

edi 是 ffffffff

test edi,edi
jl short

调试器状态跳转,据我了解,TEST 执行数学与运算,但 ffffffff AND 与 ffffffff 仍然是 ffffffff。我想知道的是,结果是如何解释的,JL 是一个有符号的跳转,当它状态跳转时如果小于,它是指小于零吗?由于 ffffffff = -1 签名,我希望你明白我的意思,edi 寄存器针对自身进行测试给出了相同的确切结果,所以它是如何减少的......

【问题讨论】:

  • test edi, edi \ jl 在某处测试edi 的符号。 jl 如果SF xor OF 则跳转。 test 将SF 设置为结果的符号,并将OF 设置为零。所以如果edi 是负数,它会跳跃。顺便说一句:我最近才告诉过你。

标签: assembly


【解决方案1】:

此代码正在测试是否设置了符号位(最高有效位),如果设置了则跳转。

【讨论】:

  • 您的意思是影响跳跃的结果是负面的还是正面的?如果 edi 为 0 那么 jz 会跟随,如果 edi 是 1 那么 jg 会跟随?所以它像这样 -32768 0 32767 ? -32768 -1 之间的任何东西都会是负数或跳跃更少,而 1 - 32767 之间的任何东西都会跳跃更大?
  • jl 表示如果设置了符号标志则跳转,否则继续下一条指令。 test edi, edi 如果edi 的值设置了符号位,则设置符号标志,否则将其清除。
猜你喜欢
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多