首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Y86和程序混淆

Y86和程序混淆
EN

Stack Overflow用户
提问于 2014-10-05 06:41:24
回答 1查看 1K关注 0票数 1

我对我的计算机架构教科书中的示例程序感到困惑。

这是C代码..。

这是生成的Y86代码..。

我的问题是0x046

代码语言:javascript
复制
mrmovl 8(%ebp), %ecx

为什么它在堆栈指针前面设置为8个字节?我想我对所有的东西都很困惑。就像堆栈正在查看0x100一样,为什么要将%ecx设置为离那里8字节,然后在计数已经从%ebp设置为12字节时增加4?我对堆栈指针究竟在看什么的理解可能是错误的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-05 07:07:48

代码按以下顺序将事情推到堆栈上:

  • Count (4)
  • Start (array)
  • 返回%eip (由call隐式推动);
  • %ebp

然后,代码将%ebp设置为%esp,堆栈如下所示:

(您主要对标记为%EBP及以上的部分感兴趣。)

希望这能澄清问题。您可以阅读更多的这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26200279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档