博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从CPU的运行到函数调用做个了解
阅读量:4881 次
发布时间:2019-06-11

本文共 744 字,大约阅读时间需要 2 分钟。

CPU的内部结构

    我们都知道CPU是一台电脑的核心部件,所有的程序都是通过它运行的,那么CPU是如何让一个程序跑起来的呢?我们今天就来一起简单的做个了解,首先看下CPU的基本结构

程序流程

    假如现在我们有个两个数相加的程序,当你点击运行这个程序时,系统会将这个程序复制到内存中。程序中的这些数据和指令会被存储在一个一个小的“内存空间”,并给每个空间一个“门牌号”,也就是内存中的地址。

    系统将程序复制到内存中后,会将程序计数器设定到程序运行的开始位置(假设这个程序的开始位置是0100),然后开始运行;当CPU每执行一条指令,程序的累加器的值就自动加1,然后CPU的控制器就会参照程序计数器的数值从内存中读取命令并执行,那么我们用图表示这个流程的话大概是下图中的样子

   

    在CPU进行运算时,标志寄存器的数值会根据运算结果自动设定。如果程序执行到跳转指令的时候,会根据地址中的内容跳转到对应的地址;条件分支在跳转指令之前会进行比较运算,然后CPU根据标志寄存器的数值进行判断是否要跳转

  

    函数调用

    对CPU的执行流程有了个大概的了解后,我们现在可以来看看咱们平时写的程序函数是怎么运行的了。在介绍之前我们先了解两个机器语言指令

call指令,把函数要执行的指令地址存储在名为栈的主内存

return指令,把保存在栈中的地址设定到程序计数器中

    在上图中,函数执行到0132的时候,并不是通过跳转指令跳转到Add函数的入口,而是通过call指令;这个地方和我没前面讲到的条件分支跳转指令是不一样的,因为调用完函数,我们还要返回函数调用的地方继续下一条指令。

    到此,我们可以对程序的运行过程有个大概的了解。

 

转载于:https://www.cnblogs.com/liunlls/p/cpu.html

你可能感兴趣的文章
python的基本用法(三)字符串常用函数
查看>>
第二章例2-2
查看>>
Java8——快速入门手册(学习笔记)
查看>>
p2p-如何拯救k8s镜像分发的阿喀琉斯之踵
查看>>
linux之多进程
查看>>
iphone设置铃声
查看>>
python基础
查看>>
HDU 3277 最大流+二分
查看>>
Angular 学习笔记 :初识 $digest , $watch , $apply,浅析用法 。
查看>>
自动化测试优缺点思考
查看>>
通过实例理解委托、lambda的演变
查看>>
javascript中数据类型转换
查看>>
ubuntu14安装node0.12.7
查看>>
JDBC的使用和SQL注入问题
查看>>
Sublime插件WakaTime使用
查看>>
vue-cli笔记
查看>>
xml转义字符在mybatis动态sql中的使用
查看>>
redis为什么设计成单线程并且还这么快?
查看>>
Lesson 45-46 Kids
查看>>
CocoaPods 1.0之前版本无法pod install和pod update! 更新后CocoaPods 1.1.1 Podfile新的写法....
查看>>