- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作者: Badcoffee
Email: blog.oliver@
2004年10月
原文出处: /yayong
这是作者在学习X86汇编过程中的学习笔记,难免有错误和疏漏之处,欢迎指正。
1. 编译环境
?? OS: Axianux 1.0?? Compiler: gcc 3..2.3
?? Linker: Solaris Link Editors 5.x?? Debug Tool: gdb?? Editor: vi!--[if !supportLineBreakNewLine]--!--[endif]--
2. 最简C代码分析!--[if !supportLineBreakNewLine]--!--[endif]--
为简化问题,来分析一下最简的c代码生成的汇编代码:??? # vi test1.c? ??? int main()??? {?? ?? ? return 0;??? }?? ???? 编译该程序,产生二进制文件:??? # gcc -o start start.c
# file start??? ?
start: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped???? start是一个ELF格式32位小端(Little Endian)的可执行文件,动态链接并且符号表没有去除。这正是Unix/Linux平台典型的可执行文件格式。
???? 用gdb反汇编可以观察生成的汇编代码:
[wqf@15h166 attack]$ gdb start
GNU gdb Asianux (6.0post-017.1AX)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.
Type show copying to see the conditions.
There is absolutely no warranty for GDB.?Type show warranty for details.r
This GDB was configured as i386-asianux-linux-gnu...(no debugging symbols found)...Using host libthread_db library /lib/tls/libthread_db.so.1.
(gdb) disassemble main牋牋牋牋?--- 反汇编main函数
Dump of assembler code for function main:
0main+0:??? push?? %ebp?? ---ebp寄存器内容压栈,即保存main函数的上级调用函数的栈基地址
0main+1:??? mov??? %esp,%ebp ?--- esp值赋给ebp,设置main函数的栈基址
0main+3:??? sub??? $0x8,%esp? ---通过ESP-8来分配8字节堆栈空间
0main+6:??? and??? $0xfffffff0,%esp ---使栈地址16字节对齐
0main+9:??? mov??? $0x0,%eax? ---? 无意义
0x0804831e main+14:?? sub??? %eax,%esp? ---? 无意义
0main+16:?? mov??? $0x0,%eax? ?--- 设置函数返回值0
0main+21:?? leave???? ---将ebp值赋给esp,pop先前栈内的上级函数栈的基地址给ebp,恢复原栈基址.!--[if !supportLineBreakNewLine]--!--[endif]--
0main+22:?? ret?? --- main函数返回,回到上级调用.
0main+23:?? nop
End of assembler dump.
注:这里得到的汇编语言语法格式
您可能关注的文档
- CS七龙珠2.1玩法介绍.ppt
- CT 基 本 知 识.ppt
- CT8685系列电测机培训教材.doc
- CTBS激活终端服务.doc
- CTC车务终端操作手册.doc
- Ctrl的多种应用小技巧.doc
- Ctrl键的强大功能.doc
- cttree6.0帮助文档.doc
- cwRsync配置手册.doc
- Cygwin基本命令.doc
- 2026年消防设施操作员之消防设备基础知识考试题库500道带答案(新).docx
- 销售岗前培训课件.ppt
- 2026年消防设备操作员考试题库500道(典型题).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道附答案(实用).docx
- 2026年消防设施操作员之消防设备高级技能考试题库300道标准卷.docx
- 2026年材料员之材料员基础知识考试题库300道附完整答案(全优).docx
- 2026年材料员之材料员基础知识考试题库300道带答案(培优a卷).docx
- 2026年机械员考试题库含答案(轻巧夺冠).docx
- 2026年材料员之材料员基础知识考试题库300道【夺分金卷】.docx
- 2026年期货从业资格之期货法律法规考试题库500道(考点精练).docx
最近下载
- 液压与气动技术PPT完整版全套教学课件.pptx VIP
- 班主任带班育人故事-班主任经验交流.ppt VIP
- 智慧树 知到 世界舞台上的中华文明 章节测试答案.docx VIP
- 部编版《道德与法治》五年级上册第6课《我们神圣的国土》精美课件(第1课时).pptx
- 剧本杀完整剧本 致命喷泉(4人封闭).docx VIP
- 水资源评价与管理-降水与蒸发.ppt VIP
- 新能源动力电池系统检修题库含答案.docx VIP
- 第三章水资源利用与保护-水资源量评价.pptx VIP
- 2025贵州黔西南州州直事业单位面向全州考聘工作人员84人笔试参考题库附答案解析.docx VIP
- 2025-2026学年小学美术六年级上册岭南版(2024)教学设计合集.docx
文档评论(0)