程序是怎么跑起来的? —— CPU 是什么?C/C++程序的运行
1. 概念初步
- 程序:计算机的程序,和做饭、运动会的程序一样,指的是“做事的先后次序”;
- 程序的组成:程序是指令(及物动词)和数据(宾语)的组合体;
- C 语言
printf("hello\n");,这个简单的程序,printf是指定,hello是数据;
- C 语言
- 机器语言:CPU 能够直接识别和执行的只有机器语言。
- 使用C、C++、Java 等高级语言编写的程序最后都会转化为机器语言;
- 正在运行的程序存储在什么位置?
- 硬盘和磁盘等媒介上保存的程序被复制到内存(内存中是其副本)后才能运行;
- 内存地址:标记和指定命令和数据的场所;
- 地址由整数值表示;
- CPU 的作用:
- 根据程序的指令来进行数据运算,并控制整个计算机的设备;
2. CPU 是什么?
CPU 负责的就是解释和运行最终转换成机器语言的程序内容;
CPU 和 内存(memory)是由许多晶体管组成的电子部件,通常称为 IC(Integrated Circuit,集成电路);
CPU 的组成(各部分之间的电信号相互流通):
寄存器;
暂存指令,数据等处理对象;可将寄存器看做内存的一种;根据种类的不同,一个 CPU 内部会有 20~100 个寄存器;
控制器;
控制器负责把内存上的指令、数据等读入寄存器,并根据执行的结果来控制整个计算机。
运算器:运算器负责运算从内存读入寄存器的数据。
时钟:负责发出 CPU 开始计时的时钟信号;
- Pentium 2GHz 就表示时钟信号的频率为 2GHz
3. C++程序的运行
生成一个 C++ 程序共有三个步骤:
- ①预处理:代码在预处理器中运行,预处理器会处理代码中的元信息(meta-information)
- 预处理指令以 # 字符开始,
#include <iostream>就是如此,本例中,include 指令是告诉预处理器,提取 iostream 头文件中的所有文件内容并提供给当前文件, - 当然头文件最常见的用途是声明在其他地方定义的函数;
- 预处理指令以 # 字符开始,
- ②编译:代码被编译为计算机可以识别的目标文件;
- ③链接:独立的目标文件链接在一起形成一个应用程序;
程序是怎么跑起来的? —— CPU 是什么?C/C++程序的运行的更多相关文章
- 每个程序员都应该了解的 CPU 高速缓存
每个程序员都应该了解的 CPU 高速缓存 英文原文:Memory part 2: CPU caches 来源:oschina [编者按:这是Ulrich Drepper写“程序员都该知道存储器”的第二 ...
- Go 程序是怎样跑起来的
目录 引入 编译链接概述 编译过程 词法分析 语法分析 语义分析 中间代码生成 目标代码生成与优化 链接过程 Go 程序启动 GoRoot 和 GoPath Go 命令详解 go build go i ...
- 使用CPU探查器优化XAML程序
如果您正在开发一个使用 XAML (是否是 c + +. C# 或 VB) 的 Windows 商店应用程序,还有一个好的机会来提高应用程序的性能.为了帮助完成这一点,我们所有在售的能够应用开发 Wi ...
- 微信小程序里实现跑马灯效果
在微信小程序 里实现跑马灯效果,类似滚动字幕或者滚动广告之类的,使用简单的CSS样式控制,没用到JS wxml: <!-- 复制的跑马灯效果 --> <view class=&quo ...
- Error:“应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。”
我的电脑是 win7 64bit,用 VS2012 跑网上下载的程序,Realease | x64 模式下出现该错误. 问题出在 freeglut.dll 是 32bit 下的 dll,需要换成 64 ...
- 微信小程序全面实战,架构设计 && 躲坑攻略(小程序入门捷径教程)
最近集中开发了两款微信小程序,分别是好奇心日历(每天一条辞典+一个小投票)和好奇心日报(轻量版),直接上图: Paste_Image.png 本文将结合具体的实战经验,主要介绍微信小程序的基础知识.开 ...
- oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序
15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...
- 【解决】应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。
换了SSD硬盘,装了Windows 7 SP1 x64的系统.用了一段时间,突然一天有些软件打不开了.弹出下面的提示 应用程序无法正常启动(0xc000007b).请单击“确定”关闭应用程序.第一时间 ...
- [MarsZ]程序猿谈大学之为什么不推荐就业时做程序猿
这篇文章适合一切有志做一个程序猿的人,而不仅仅只是即将进入就业市场的大学生. “又到了毕业找工作的时候了,好多朋友打电话向我咨询要不要让孩子做程序员.作为一个业内资深人士,我觉得这不能一概而论!要辩证 ...
随机推荐
- 关于viewport详解
- 解决电信或网通的DNS劫持
大家有没有碰到访问一些不存在域名或者网站时,浏览器本应显示一个网址不存在之类的信息,但是因为现在很多ISP做了DNS劫持将不存在的域名或网址重定向到ISP的广告页面,烦人的狠.其实tomato可以解决 ...
- Vue总结(一)
vue总结 构建用户界面的渐进式框架 渐进式:用到什么功能即可使用转么的框架子模块. 两个核心点 向应的数据绑定 当时图发生改变->自动跟新视图,利用Object.defindProperty中 ...
- scrollWidth到底是什么???
贴上MDN对scrollwidth的定义: The Element.scrollWidth read-only property is a measurement of the width of an ...
- Hexo High一下以及压缩排版问题
背景介绍 集成Hight一下以及Gulp-html压缩之后出现的问题: High一下功能多次点击,会创建多个Audio对象,导致同时播放多次音乐,重音.解决办法:判断是否添加Audio对象,如果存在则 ...
- AJAX 删除数据
var json = { "id":"12", "name":"admin"}$.ajax({ type: " ...
- jni中调用java方法获取当前apk的签名文件md5值
相应的java方法: void getsign(Context context) throws Exception { PackageInfo localPackageInfo = context.g ...
- vim 基础学习之替换
替换命令substitute可以用来查找跟替换操作. :[range]s[ubstitute]/{pattern}/{string}/[flags] [count] range-命令作用范围(缺省的情 ...
- package-判断安装应用是否存在
今天在修改一个bug的时候,遇到一个问题,就是一个应用卸载了以后,在超级用户权限界面仍然会加载进来这个应用的相关信息.自己修改的时候,为了方便,就直接使用了里面一个加载图标的代码作为条件,也就是说,如 ...
- Vue绑定事件
<!-- 方法处理器 --> <button v-on:click="doThis"></button> <!-- 内联语句 --> ...