• 2019-2020-1 20199305《Linux内核原理与分析》第二周作业


    C程序的反汇编

    (一)实验截图

    • 复制所需要的C程序到“剪切板”

    • 在虚拟机环境下粘贴过来

    • 接下来进行反汇编,通过输入gcc -S -o main.s main.c -m32得到32位的x86环境中

    的汇编代码文件,然后删除.开头的语句,获得“干净”的代码



    (二)汇编简析

    这是一个简单的的C程序,运算过程中有两次调用,所以汇编语言中使用了call

    • pushl %ebp

    ESP地址减4,EBP寄存器的数据存入栈顶

    • movl %esp,%ebp

    EBP指向ESP的位置

    • movl $8(%ebp),%eax

    EBP寄存器的地址加上立即数(常数)8,将它指向的值放入EAX寄存器(变址寻址)

    • subl $4,%esp

    堆栈减4

    • add $3,%eax

    EAX寄存器中的值加上立即数3

    • movl %eax,(%esp)

    将EAX寄存器中存储的值存放到ESP所指的位置

  • 相关阅读:
    货币
    沙漏
    秋季学习总结
    三个老师
    介绍自己
    redis 的部分配置
    第二次博客作业
    第一次阅读作业
    shell_通配符
    shell_/dev/null,>和&
  • 原文地址:https://www.cnblogs.com/20199305yizihan/p/11568626.html
Copyright © 2020-2023  润新知