我在 x86 程序中有以下汇编代码,我需要修改它,因为它有问题:
fld ds:(flt_203B8 - 29C48h)[ebx]
fdivr dword ptr [esi+44h]
fmul ds:(flt_203BC - 29C48h)[ebx]
fisttp [ebp+var_334]
mov eax, [ebp+var_334]
cmp eax, 0Fh
jg short greater
test eax, eax
mov edx, 0
cmovs eax, edx
jmp short valueWithinLimits
greater:
mov eax, 0Fh
valueWithinLimits:
....
在伪代码中,这是
v29 = (signed int)(*(float *)(v3 + 68) / 40.0 * 15.0);
if ( v29 > 15 )
{
v29 = 15;
}
else if ( v29 < 0 )
{
v29 = 0;
}
我需要插入以下行作为第二行:
v29 = 15 - v29;
有什么办法可以在不需要更多空间的情况下做到这一点吗?我假设没有,但也许有人在这里有一个聪明的想法,在这种情况下可以做什么。