zoukankan      html  css  js  c++  java
  • 计算机是如何工作的

    符钰婧

     原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

     一.实验题目

         关于计算机是如何工作的这个问题,本文将通过一个反汇编C程序的实验来解释。

    二. 实验内容和截图

         在虚拟机环境下进行实验,新建main.c文件,将题目中的C程序复制到main.c文件中,,利用gcc命令编译成汇编代码

     

     三.下面分析汇编代码工作过程中堆栈的变化

    执行push指令,此时esp指向1,然后ebp的值被赋值给地址1所表示的值;

    执行move指令,此时ebp也指向了1

    执行sub指令,esp的值减4,相当于往下移了一位,此时esp指向2

    执行move指令,为立即数寻址,就是将数字6赋值给寄存器eax,再把eax的值赋给esp所指地址表示的值;

    执行call指令,esp4指向地址3eip指向下一条指令(26行处),然后将这个值赋给地址3表示的值,最后eip指向函数f

    首先寄存器eip指向程序的第一条指令(21行处),此时的栈为空栈。

    这一段代码结束之后,ebp指向1esp指向3

    四.总结

     就好比这幅图 cpu里存储,在内存里执行汇编指令

     

    计算机是如何工作的:把C语言变成机器语言,用汇编语言执行我们输入的指令。

  • 相关阅读:
    5.Spring常用注解
    4.@Autowired注解与@Resource注解的区别
    3.只读事务@Transactional(readOnly = true)
    2.Object...param参数
    1.private static final long serialVersionUID = 1L
    SOCKET是调用操作系统通信服务的一种机制
    HTTP头和网页分离方法

    Python split()方法
    socket (计算机专业术语)
  • 原文地址:https://www.cnblogs.com/fuyujing/p/5210307.html
Copyright © 2011-2022 走看看