栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

2021-2022-1 20212818《Linux内核原理与分析》第二周作业

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-2022-1 20212818《Linux内核原理与分析》第二周作业

实验一  反汇编一个简单的C程序

步骤:

1、创建一个.c函数,并在其中输入代码

 

 

2、使用命令将其译成汇编代码

 

3、在文档中打开main2818.s文件,其中则是汇编代码

 

4、删去用于链接辅助信息的语句(即前面带.的语句),结果如下

g:
    pushl    %ebp
    movl    %esp, %ebp
    movl    8(%ebp), %eax
    addl    $2818, %eax
    popl    %ebp
    ret
f:
    pushl    %ebp
    movl    %esp, %ebp
    subl    $4, %esp
    movl    8(%ebp), %eax
    movl    %eax, (%esp)
    call    g
    leave
    ret
main:
    pushl    %ebp
    movl    %esp, %ebp
    subl    $4, %esp
    movl    $2818, (%esp)
    call    f
    addl    $1, %eax
    leave
    ret

4、汇编代码分析

调用流程 main函数

 

汇编语言调用堆栈变化过程

  • 初始阶段,esp、ebp指针都是指向1000这个位置(假设堆栈大小为1000)

  • 执行main函数

 

 

  • 执行

 

  • 执行跳转到f函数执行

  •  

  • 执行

 

 

-执行跳转到g函数


 

 

  • 执行

 

 

  • 执行

 

 

  • 执行

 

 

  • 执行


  •  

  • 执行

  • 执行

  •  

     

  • 执行

  •  

     5、遇到的问题

  • 未注意到文件被删除就开始编译代码。

  • 对编译的知识遗忘较多,通过查找资料进行复习和回顾再进行汇编代码的分析。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号