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

    知识点:

    冯诺依曼体系结构结构,它最核心的思想是存储程序计算机。

    cpu通过总线与内存连接,依靠ip指针依次从内存中取出一条指令执行。

    API:程序员与计算机的接口界面。

    ABI:程序与CPU的接口界面。

    寄存器、寻址方式和各类指令在学习《深入理解计算机》和《汇编》时已做了详细了解,不再赘述。

    实验:

    截图入下:

    原代码为:

    int g(int x)
    {
    return x+3;
    }

    int f(int x)
    {
    return g(x);
    }
    a
    int main(void)
    {
    return f(8)+1;
    }

    汇编代码为:

    g:
    pushl %ebp
    movl %esp, %ebp
    movl 8(%ebp), %eax
    addl $3, %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 $8, (%esp)
    call f
    addl $1, %eax
    leave
    ret

    代码非常简单,只要记住

    pushl %ebp 等价于 subl $4,%esp movl %ebp,(%esp)

    leave 等价于 movl %ebp,%esp popl %ebp

    popl %ebp 等价于 movl (%esp),%ebp addl $4

    call是将返回地址也就是当前eip的值压入栈顶,然后跳转到函数的起始地址

    ret弹出返回地址到eip继续执行下面的指令

    计算机的工作原理:

    就是按照程序的编排,cpu从内存中一个一个取出指令和数据并执行。

    作者:胡御风

    原创作品转载请注明出处

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

  • 相关阅读:
    Nginx负载均衡+代理+ssl+压力测试
    Nginx配置文件详解
    HDU ACM 1690 Bus System (SPFA)
    HDU ACM 1224 Free DIY Tour (SPFA)
    HDU ACM 1869 六度分离(Floyd)
    HDU ACM 2066 一个人的旅行
    HDU ACM 3790 最短路径问题
    HDU ACM 1879 继续畅通工程
    HDU ACM 1856 More is better(并查集)
    HDU ACM 1325 / POJ 1308 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/huyufeng/p/5221952.html
Copyright © 2011-2022 走看看