lea edi, [ebx-1]
not edi
lea eax, [eax+ebx-1]
and eax, edi
这是一段反汇编代码,
其中,一开始 eax是一个地址,ebx是一个整数,最终的eax是需要的结果。
请问,按照正常的编程思维理解,这是做了啥了?
------解决方案--------------------
根据将结构体大小 将结构体对齐到一个适合的位置而已
------解决方案--------------------
应该就是将结构的起始地址根据对齐尺寸调整到适当的位置。
eax ---> 结构的起始地址(指针)
ebx ---> 对齐尺寸
大致上相当于以下C代码:
void *AlignTo(const void *P, int AlignSize)
{
return (void *)(((int)P + AlignSize - 1) & (-AlignSize));
}