我在汇编方面没有太多经验,我正在尝试更改更改最终值的步长值,这些是我正在使用的操作码,这就是它们的设置方式:
movss xmm0,[eax+30]
addss xmm0,[esi+00000094]
movss [eax+30],xmm0
movss xmm0,[esi+00000098]
addss xmm0,[eax+34]
movss [eax+34],xmm0
movss xmm0,[esi+0000009C]
addss xmm0,[eax+38]
movss [eax+38],xmm0
现在到目前为止,我认为这些addss
行是负责增加或减少xmm0
浮点值的那些:
movss [eax+30],xmm0
movss [eax+34],xmm0
movss [eax+38],xmm0
我试图实现的是繁衍将被加入到步长值xmm0
的addss
线路:
addss xmm0,[esi+00000094]
addss xmm0,[eax+34]
addss xmm0,[eax+38]
我假设是[esi+00000094] [eax+34] [eax+38]
.
我尝试将它们乘以 (float)2.00(以及其他乘法因子,例如 1.50 和 0.20),如下所示
addss xmm0,[esi+00000094]*(float)2.00
addss xmm0,[eax+34]*(float)2.00
addss xmm0,[eax+38]*(float)2.00
但当然,我的无知证明这不是解决问题的方法,而且由于我在该领域的知识几乎为零,因此我决定寻求帮助。
更好地解释我认为这里正在发生的事情以及我正在尝试做的事情是这样的:
addss xmm0,[esi+00000094] == addss 31.00,[0.43] <- 31 being the current/old
value and 0.43 being the
increment value that
will add to 31
movss [eax+30],xmm0 == movss [XXXXXXXXX],31.43 <- XXX being the address
that holds the new value
and xmm0 the one that
will copy the new value
to the target
address/register
---what I am trying to do if I am correct---
addss 31.00,[0.43*n] <- n being a float point set by me (2.00 or 1.50 or 0.03)
movss [XXXXXXXXX],31.86 <- final value is copied to the target address with the
intended increment/decrement (in case of 0.### float
values) effectively set by me
谁能告诉我正确的方法吗?我什至不知道这些addss
行是否是我可以修改步长值的正确行(增加或减少 中的最后一个xmm0
值的行movss [eax+30],xmm0 | movss [eax+34],xmm0 | movss [eax+38],xmm0
)。
我正在使用[CE's]自动汇编器工具来实现这一点,修改内存值。