Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >装配中的EBP、ESP和堆栈框架

装配中的EBP、ESP和堆栈框架
EN

Stack Overflow用户
提问于 2013-01-06 10:34:37
回答 1查看 10.1K关注 0票数 8

在下面的代码中,我有一些关于EBP、ESP和堆栈框架的问题。

  1. 为什么我们从esp中减去28?我们主要有两个局部变量x和y。那我们为什么不减去8呢?
  2. 难道我们不把值从右(或上)堆到左(或底)吗?那么,为什么我们将1添加到eax+8而不是eax+4?
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func(int a, int b, int c)
{
  return a+b+c;
}
main()
{
 int x, y=3;
 x=func(y,2,1);
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-06 11:11:46

  1. 堆栈指针被减去28,因为两个局部变量需要8个字节,参数需要12个字节才能发挥作用。额外的8个字节可能是因为编译器试图将main的堆栈对齐到一个16字节的边界(main的返回地址在堆栈上已经有4个字节,当EBP被推入main的第一条指令中建立堆栈帧时,另外还有4个字节)。如果你在使用GCC,请看-优选-堆栈-边界
  2. 参数正从右向左传递。由于在从堆栈指针中减去堆栈空间时,已经为这三个参数分配了堆栈空间,因此相对于当前堆栈指针(+8),1被移动到“最高”位置,2被移动到中间(+4),y中的值被移动到堆栈指针本身。这与在堆栈上推1、在堆栈上按2、然后在堆栈上推y是一样的。到最后一次推送指令时,1是ESP +8,2 is +4来自ESP,y +0来自ESP。请注意,在func内部,它必须将8添加到这些偏移量中,因为返回地址是从调用指令推送到堆栈上的,而func推送EBP以建立堆栈框架。
  3. 搞不清楚是什么结构?
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14185381

复制
相关文章
pycharm上传文件到服务器_python代码部署到服务器
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/174583.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
4.2K0
pycharm上传文件到服务器_python代码部署到服务器
mac怎么上传文件到服务器_shell上传文件到服务器
我们使用mac时,想让本地文件上传至服务器,该怎么办呢 windows系统,我们可以使用xftp或者rz命令,那么mac呢? mac系统,我们可以使用sftp、scp或者rz命令,本文介绍sftp
全栈程序员站长
2022/09/19
13.1K0
mac怎么上传文件到服务器_shell上传文件到服务器
iOS开发中上传JSON字符串到后台服务器
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/72457751
用户1451823
2018/09/13
1.6K0
[android] 上传文件到服务器
前面我们使用普通的方式post提交数据,比较麻烦,现在使用异步框架来实现以下,感觉非常舒服。
唯一Chat
2019/09/10
7.3K0
IOS 上传到后台json数据
今天后台让我传一个类似下图 后台要求的数据格式 我以前还没有这样传过数据。不知道该怎么传,在网上搜了一下,很感谢www.cnblogs.com/yang-guang-girl/p/5642333.ht
honey缘木鱼
2018/06/13
8270
jenkins上传文件到服务器
2、获取文件名,重新命名文件为上传的名字。(mv file_name ${file_name})
@凌晨
2023/09/29
8310
jenkins上传文件到服务器
上传项目代码到Github|Gitee
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
WHYBIGDATA
2023/01/31
6850
上传项目代码到Github|Gitee
如何上传代码到github?
1. 先到GitHub: Where the world builds software · GitHub 注册一个账号,此处忽略
全栈程序员站长
2022/11/15
6440
如何上传代码到github?
上传本地代码到github
点击下面的Create repository,就会进入到类似下面的一个页面,拿到创建的仓库的https地址,红框标示的就是
IT小马哥
2020/03/18
7000
idea上传代码到github
在第一次提交的情况下,如果报错 Push rejected: Push to origin/master was rejected。
Twcat_tree
2022/11/30
6960
idea上传代码到github
Springboot上传文件到Linux服务器
jar打包方式不支持将文件动态写入文件,这时需要通过映射的方式将文件上传到映射某一个文件夹,通过映射获取文件,在页面显示。
全栈程序员站长
2022/08/30
5.7K0
Springboot上传文件到Linux服务器
iOS实现上传图片到服务器
当然如果你的项目大的话最好使用开源的网络库ASI或者AFNetWork,库里面都有现有的方法,
用户7705674
2021/10/29
2.8K0
Python上传文件到FTP服务器
代码在python2.7下测试通过!写在最前面! # -*- coding: UTF-8 -*- from ftplib import FTP import os import os.path #上传文件到FTP服务器 def ftp_upload(filename, save_filename): ftp = FTP() ftp.set_debuglevel(0) # 打开调试级别2,显示详细信息;0为关闭调试信息 ftp.connect('bl
苦咖啡
2018/04/28
8.7K0
IOS Alamofire上传文件到服务器
103 @IBAction func touchupInsideUploadingFileBtnAction(_ sender:AnyObject) { 104 let fileURL = Bundle.main.url(forResource:“tortoise”, withExtension:“png”) 105 Alamofire.upload(fileURL!,to:“https://httpbin.org/post”) 106 .validate() 107 .response
用户5760343
2019/07/08
3.6K0
使用linux上传代码到gitee
一、 git的安装 sudo yum -y install git 检查是否安装成功 git --version(这个是输入) git version 1.8.3.1 (若安装成功会自动弹出) 二、过程 1. 仓库链接 首先登录gittee,进入仓库,并找到克隆/下载 点击下载后,找到HTPPS并复制链接 2.linux中的操作 进入你想要传的文件目录中 [yzq@VM-8-8-centos ~]$ cd mk [yzq@VM-8-8-centos mk]$ ls main.c ma
lovevivi
2022/11/10
7080
使用linux上传代码到gitee
Git上传项目代码到github上
1、在github上申请账号,并New Repositories(我的名字是April-Taurus),新建的Repository默认master为其主干分支
杨肆月
2019/08/15
1.2K0
Git上传项目代码到github上
存取json数据到数据库
开发中可能会遇到这样的需求:比如说页面的一个N*N的表格中需要存取多个字段,如下图所示,很明显这里是需要支持动态添加的,如果此时我们建立对应的字段如插入的话,显然是一种比较麻烦的方式,所以我们可以使用在对应的实体类中添加一个List或者是JsonArray字段来表达对应的字段。如图二所示:
关忆北.
2021/12/07
1.3K0
存取json数据到数据库
java图片上传服务器保存路径(如何上传文件到网站服务器)
好了现在重点就是看Upload 这个类了 这个类基本是封装好了的,需要 加的东西可以自己取看看然后修改
Java架构师必看
2022/04/11
8K0
点击加载更多

相似问题

Android分块上传图片和JSON数据到服务器

82

Android上传JSON到服务器错误

21

JSON和上传图片到服务器

21

Javascript / Json / Firestore代码到firestore批量上传

113

如何批量上传JSON数据到Cloudant?

120
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文