当前位置: 代码迷 >> 汇编语言 >> 请教这几句是啥意思
  详细解决方案

请教这几句是啥意思

热度:135   发布时间:2016-05-02 04:35:38.0
请问这几句是啥意思?
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));
}
  相关解决方案