次の分解があります。
[dest] = d5 cd e8 ca 68
movzx eax, [ebp+dest]
# value of edx at this point is: F7FBB898
movsx edx, al
# value of edx after this is: FFFFFFD5
# [ebp+var_E] stores 0
movzx eax, [ebp+var_E]
movsx eax, al
# eax = 0 here
add eax, edx
# eax becomes FFFFFFD5
cmp eax, 0D5h
jnz short loc_565564E6
以下に、各命令の説明と流れを示します。
- [dest] から 1 バイトを読み取り、eax に格納します。
- edx の初期値は F7FBB898 です。あと、movsx edx、al命令はFFFFFFD5になります。この時点で edx の値が 0x000000d5 であることを確認するにはどうすればよいですか?
これらの操作の後、eax の最終値が 0xFFFFFD5 ではなく 0xd5 になるように、[dest] の初期値はどうあるべきか