64位x86的函数调用栈布局
- #include stdlib.h>
- #include stdio.h>
- static void test(void *p1, void *p2, int p3)
- {
- p1 = p1;
- p2 = p2;
- p3 = p3;
- }
- int main()
- {
- void *p1 = (void*)1;
- void *p2 = (void*)2;
- int p3 = 3;
- test(p1, p2, p3);
- return 0;
- }
- (gdb) bt
- #0 test (p1=0x1, p2=0x2, p3=3) at test.c:10
- #1 0x0000000000400488 in main () at test.c:18
- (gdb) info registers rbp
- rbp 0x7fffab620d00 0x7fffab620d00
- (gdb) x /16xg 0x7fffab620d00
- 0x7fffab620d00: 0x00007fffab620d30 0x0000000000400488
- 0x7fffab620d10: 0x00000000004004a0 0x0000000000000002
- 0x7fffab620d20: 0x0000000000000001 0x0000000300000000
- 0x7fffab620d30: 0x0000000000000000 0x00007f93bbaa11c4
- 0x7fffab620d40: 0x0000000000400390 0x00007fffab620e18
- 0x7fffab620d50: 0x0000000100000000 0x0000000000400459
- 0x7fffab620d60: 0x00007f93bc002c00 0x85b4aff07d2e87c7
- 0x7fffab620d70: 0x0000000000000000 0x00007fffab620e10
- (gdb) disassemble main
- Dump of assembler code for function main:
- 0x0000000000400459 : push %rbp
- 0x000000000040045a : mov %rsp,%rbp
- 0x000000000040045d : sub $0x20,%rsp
- 0x0000000000400461 : movq $0x1,-0x10(%rbp)
- 0x0000000000400469 : movq $0x2,-0x18(%rbp)
- 0x0000000000400471 : movl $0x3,-0x4(%rbp)
- 0x0000000000400478 : mov -0x4(%rbp),%edx
- 0x000000000040047b : mov -0x18(%rbp),%rsi
- 0x000000000040047f : mov -0x10(%rbp),%rdi
- 0x0000000000400483 : callq 0x400448
- 0x0000000000400488 : mov $0x0,%eax
- 0x000000000040048d : leaveq
- 0x000000000040048e : retq
- End of assembler dump.
- (gdb) info registers
- rax 0x7f141fea1a60 139724411509344
- rbx 0x7f14200c2c00 139724413742080
- rcx 0x4004a0 4195488
- rdx 0x3 3
- rsi 0x2 2
- rdi 0x1 1
- rbp 0x7fff9c08d380 0x7fff9c08d380
- rsp 0x7fff9c08d380 0x7fff9c08d380
64位x86的函数调用栈布局相关推荐
- c语言与64位windows不兼容_微软发布可模拟 64 位 x86 程序的 ARM 版 Windows 10
微软今天宣布推出可以在 ARM 架构 PC 上模拟 64 位 x86 程序的新版 Windows 10.这意味着,拥有 ARM PC 的用户,比如 Surface Pro X 可以安装 64 位 x8 ...
- 一文入门64位x86汇编
本文我试图用学习一个普通编程语言的思路讲述x86_64汇编. 本文所有汇编代码均在linux系统写成,并且使用了很多linux系统调用. 需要C语言基础. 持续更新中. 目录 〇.汇编语言的选择 (一 ...
- 浅淡Windows7 32位与64位/x86与x64的区别
看到有很多会员问到底是选Windows7 x86,还是选x64.这里简单的谈一下这这两种系统的区别. 简单的说x86代表32位操作系统 x64代表64位操作系统. 简单的判断电脑是否支持64位操作系 ...
- 不要再被误导了,64位X86 CPU是没有64位寻址能力的!
本文转载于:http://itbbs.pconline.com.cn/9769891.html 最近这几天在CPU超频版发了个悬赏贴,特意看看有多少人认为CPU的位宽意味着寻址能力,结果发现也有相当一 ...
- [分享]Win7 32位与64位/x86与x64的区别
看到有很多会员问到底是选Windows7 x86,还是选x64.这里简单的谈一下这这两种 系统 的区别. 简单的说x86代表32位操作系统 x64代表64位操作系统. 如果你的 CPU 是双核以上, ...
- TensorFlow Serving安装笔记(仅限64位x86)
官方文档: https://tensorflow.google.cn/serving/setup 几个要点 翻墙下载公钥 https://storage.googleapis.com/tensorfl ...
- 关于x86_64和x32和x86和-386和32位还是64位的区分 指令集的学习
这里写自定义目录标题 一,查到的知识 查看linux内核信息 查看linux版本信息 查看当前的系统位数 其他搜索到的信息 指令集和指令集架构的区分 关于x86_64和x32和x86和-386和32位 ...
- C 语言 函数调用栈
From:https://www.cnblogs.com/clover-toeic/p/3755401.html https://www.cnblogs.com/clover-toeic/p/3 ...
- C语言函数调用栈(一)
以下全文转载自:C语言函数调用栈(一) 程序的执行过程可看作连续的函数调用.当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行.函数调用过程通常使用堆栈实现,每个用户态 ...
最新文章
- python怎么处理数据_python panda怎么处理数据
- 【Python】判断列表 list 是否为空
- VS 中配置使用Visual SVN系列 一:SVN Server下载和安装
- Socket请求获取数据
- Python3实现最小栈
- python network script
- spark的java源码,Spark源码包的编译
- python多维列表索引越界怎么处理_Python中remove漏删和索引越界问题的解决
- linux环境下grep的相关含义
- 在电脑上安装python-如何在自己的电脑上安装python的idle版 - 卡饭网
- 数据结构简单模拟银行排队系统
- Flutter开发:使用SafeArea(安全区域)
- 2016首次CCCC总结
- 计算机电路图解,简单逆变器电路图和工作原理图解大全
- 67 2020:我的总结和给圈友的话【2020-12-31 0003】
- 关于CM3/CM4位带操作的总结
- 选购云服务器时云盘该如何选择?(高性能/SSD/增强型/急速型)
- SuperMap iDesktop 之 BIM优化流程——建筑篇
- 软件开发综合实践实习小结
- 智能浇花系统(ESP8266+APP Inventor+DHT11)
热门文章
- python webserver模块,python探索之BaseHTTPServer-实现Web服务器介绍
- 订阅发布可靠吗_华辉人力资源可靠吗?发布的招聘信息是否可靠?
- 数据建模_浅谈数据仓库建设中的数据建模方法
- 二叉搜索树的删除_LeetCode109.有序链表转换二叉搜索树
- python scrapy框架 抓取的图片路径打不开图片_Python中Scrapy爬虫图片处理详解
- Vue父组件访问子组件属性和方法、父子组件双向绑定(两种方法)
- Java企业介绍,Hunson 介绍
- java赋值兼容原则,多态问题抛出(赋值兼容性原则遇上父类与子类同名函数的时候)...
- SCPPO(二十七):技术盛宴—报表交流会
- 前端那些事之Nuxt.js