zoukankan      html  css  js  c++  java
  • Linux内核分析——汇编代码执行及堆栈变化

    张潇月《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

    一、实验步骤

        首先借助实验楼这个平台进入Linux系统,打开了Xfce终端将代码写入。

        通过cd Code命令打开Code文件夹,将后面录入的代码放在文件夹中,便于下载代码,有利于后面的详细分析。

        其中通过命令gcc  main.c命令来编译代码;通过gcc  -S  -o  main.s  main.c  –m32来反汇编代码。-m32代表的是32位系统。

    将得到的main.s文件打开,删掉.*的语句,得到最终的、起真正关键作用的语句。

    二、堆栈变化

        按照计算机运行前后,代码排序为

    18    pushl    %ebp       

    19    movl     %esp, %ebp

    20    subl     $4, %esp

    21    movl     $9, (%esp)       

    22    call    f

    9    pushl    %ebp       

    10    movl     %esp, %ebp

    11    subl      $4, %esp 

    12    movl     8(%ebp), %eax

    13    movl     %eax, (%esp)

    14    call   g      

    2    pushl    %ebp       

    3    movl     %esp, %ebp    

    4    movl     8(%ebp), %eax         

    5    addl     $5, %eax       (eax=9+5=14)

    6    popl     %ebp       

    7    ret       

    15    leave

    16    ret

    23    addl      $2, %eax    (eax=14+2=16)

    24    leave

    25    ret   

    三、计算机是如何工作的

    我认为计算机其实是很机械的在工作中,它只是从内存里取出的第一条指令开始,开始做对应的动作。从存储器中取出对应的数据,然后运算或者其他逻辑操作等,然后将结果送去对应的地址去。然后在进行下一条指令,重复一样的动作,直到结束。

     

     

  • 相关阅读:
    python 元组及操作
    python 字典所有操作
    python 列表操作
    python 运算符
    python while循环
    python 分支语句 等值判断 逻辑运算符
    GDI+_从Bitmap里得到的Color数组值分解
    服务器设计策略
    服务器设计策略
    IOCP的缓冲区
  • 原文地址:https://www.cnblogs.com/20135131zxy/p/5224486.html
Copyright © 2011-2022 走看看