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语言变成机器语言,用汇编语言执行我们输入的指令。

  • 相关阅读:
    input type = file 上传图片转为base64
    vue-cli 搭建的项目,无法用本地IP访问
    js小数点精度问题
    虚拟机安装软件必备技术之一 --虚拟机快照技术
    Linux 关机命令总结
    查询模块错误排查
    - Oracle 闪回特性(FLASHBACK DATABASE)
    ORACLE密码过期,修改密码
    查看sql执行进度
    ORACLE CPU过高的sql查询
  • 原文地址:https://www.cnblogs.com/fuyujing/p/5210307.html
Copyright © 2011-2022 走看看