新手求助一段汇编代码的功能。最好能把PUSH和POP之间的每句都解释一下,不甚感激

a303274454 2018-07-31 11:54:01
PUSH EBP
SUB ESP,8
PUSH EBX
PUSH ESI
PUSH EDI
MOV EAX,DWORD PTR [EBP+8]
MOV EAX,DWORD PTR [EAX*4+4D9A4C]
MOV DWORD PTR [EBP-4],EAX
MOV EAX,DWORD PTR [EBP-4]
MOV EAX,DWORD PTR [EAX]
AND EAX,FF
MOV DWORD PTR [EBP-8],EAX
MOV EAX,DWORD PTR [EBP-4]
ADD EAX,8
MOV ECX,DWORD PTR [EBP+C]
MOV DWORD PTR [ECX],EAX
MOV EAX,DWORD PTR [EBP-8]
POP EDI
POP ESI
POP EBX
LEAVE
RETN


求助这段代码到底是什么功能。。
...全文
231 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
a303274454 2018-07-31
  • 打赏
  • 举报
回复
引用 3 楼 DelphiGuy 的回复:
没有什么意义,就是不优化编译的结果,前一条指令是存储数据,后一条指令是用到了那个数据又取了一次。

好的,谢谢了。
  • 打赏
  • 举报
回复
没有什么意义,就是不优化编译的结果,前一条指令是存储数据,后一条指令是用到了那个数据又取了一次。
a303274454 2018-07-31
  • 打赏
  • 举报
回复
引用 1 楼 DelphiGuy 的回复:
大致上如此:
int func1( int index, int *dest)
{
static int *p[???] = {...};

int *ptr = p[index];
int r = *ptr & 255;
*dest = (int)ptr + 8;

return r;
}

你好,我大致懂了。还有个问题想问一下,
MOV DWORD PTR [EBP-4],EAX
MOV EAX,DWORD PTR [EBP-4]
这两句有什么意义吗。
  • 打赏
  • 举报
回复
大致上如此:
int func1( int index, int *dest)
{
static int *p[???] = {...};

int *ptr = p[index];
int r = *ptr & 255;
*dest = (int)ptr + 8;

return r;
}

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧