程序与CPU
CPU中共有四大组件:
寄存器 控制器 运算器 时钟
寄存器:存取数值(存东西的)
控制器:负责将内存(寄存器)中的数据进行读入和写出(控制寄存器 协调者)
运算器:里面是逻辑运算单元,协助寄存器和控制器来达到运算的效果
时钟:时钟频率单位GHz。3.2GHz相当于32亿次每秒 1GHz=10亿次每秒 每算一次运行非常快
程序员最主要的注意:寄存器。其他三个我们接触不到
寄存器是必须要深入理解的,因为他是我们存储数据的地方,也是我们接受数据的地方
语言:
高级语言-->低级语言:汇编语言-->机器语言:CPU能直接读懂的语言
int白皮书:里面都是指令两千多页 每一个指令都有对应的汇编语言
高级语言:人类能读懂,指令更少 利用编译器让高级语言变成计算机能够读懂的语言
利用Hex打开任何程序都是二进制的数据
程序包含了两个方面:1.算法 2.数据
程序和CPU的关系
CPU中的寄存器:
累加寄存器 标志寄存器 程序计数器 基址寄存器 变址寄存器 通用寄存器 指令寄存器 栈寄存器
累加寄存器:主要记录计算之后的数据
标志寄存器:和内存无关 和内存一样 读取拷贝 记录CPU里面的状态 运算之后CPU中的值是否溢出是否为0
程序计数器:存储了下一条指令在我们内存中的地址用二进制储存 存储的是指定的地址
基址寄存器:是用来存储开始的寄存器
变址寄存器:存取基址寄存器的相对位置
基址寄存器加变址寄存器能够得到某一个内存地址
通用寄存器:什么都能用
指定寄存器:CPU内部来使用的程序员是是不能使用的
栈寄存器:记录栈的起始位置
CPU和内存是分开的但是连线是在一起的
CPU通过他的总线告诉主板上的控制器来读取内存的值
寄存器的运算速度是我们内存运算速度的几十甚至上百倍(效率高)相当于CPU中的内存
CPU指令集中有跳转指令:1.运算2.计数器的置位3.得出置位里的值来修改程序计数器
程序与CPU的更多相关文章
- 程序员基层知识程序与cpu【更新1】
我是一个小白,但我通过学习我慢慢的懂了一些事.分享出来有错误的望大咖指导. 我们要很明确的明白我们学的是编程而不是编程语言,编程语言只是工具用来方便我们做很多编程有关的事. 首先我在学习的过程中,第一 ...
- 使用Java VisualVM配置Java应用程序/分析CPU或内存的使用情况(转)
以下内容翻译自(机翻):https://baptiste-wicht.com/posts/2010/07/profile-applications-java-visualvm.html 当您需要发现应 ...
- windows 排查javaWeb程序占用CPU过高问题(可追踪到问题代码所在行)
1.情景展示 java虚拟机占用这么高的CPU,肯定不正常! 2.原因分析 第一个是tomcat,正在运行java项目: 第二个是eclipse,因为eclipse的运行依赖于java. 现在的问 ...
- JAVA应用程序占用CPU、内存过高分析过程
1.查看cpu占有率 top -P 2.查看进程cpu占用率 ps -mp 3749 -o THREAD,tid,time|sort -rn|head -n 20 查看占用cpu高,且占用时间长的线程 ...
- windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
我的一个java程序偶尔会出现cpu占用很高的情况 一直不知道什么原因 今天终于抽时间解决了 系统是win2003 jvisualvm 和 jconsole貌似都只能看到总共占用的cpu 看不到每个线 ...
- 如何提高多线程程序的cpu利用率
正如大家所知道的那样,多核多cpu越来越普遍了,而且编写多线程程序也是件很简单的事情.在Windows下面,调用CreateThread函数一次就能够以你想要的函数地址新建一个子线程运行.然后,事情确 ...
- windows下揪出java程序占用cpu很高的线程
背景 天天搞java,这些监控也都知道,用过,但也没往细里追究.因为也没碰见这种问题,这次还是静下来走一遍流程吧.与网上基本一致,不过我区分了下linux和windows的不一样.我感觉基本是程序写成 ...
- 小白的CTF学习之路1——程序与CPU
刚刚注册了这个博客园,尽量保持每日一更(*/ω\*) 今天看了po学院的教学视频,了解了程序是什么,如何在CPU当中工作的等各种之前未曾想过的问题,特此记录,以防忘记 首先我们学习程序与CPU之前需要 ...
- 线上Java程序占用 CPU 过高,请说一下排查方法?
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...
随机推荐
- Python 3.5学习笔记(第一章)
本章内容: 1.安装python 3.5 和 PyCharm 社区版 2.第一个python程序 3.变量 4.字符编码 5.用户输入 6.字符串格式化输出 7.if .else .elif 8.fo ...
- ps aux | grep "svnserve" | cut -c 9-15 | xargs kill -9
ps aux | grep "svnserve" | cut -c 9-15 | xargs kill -9
- Excel催化剂开源第2波-自动检测Excel的位数选择对应位数的xll文件安装
Excel插件的部署问题难倒了不了的用户,特别是VSTO的部署,用ExcelDna开发的xll文件部署方便,不挑用户机器环境,是其开发Excel插件的一大优势. 其开发出来的xll文件,最终还是需要考 ...
- Hive的架构原理&Hive的安装步骤
Hive架构图 元数据默认数据库是:Derby.开发使用MySQL Hive如何将SQL语句翻译成MapReduce的? 1.使用SQL解析器解析SQL语句 2.使用编译器进行编译逻辑 3.使用优化器 ...
- 我狠起来连自己都打---如何简单实现Azure resource自动打标签
你是否还在为花费大量Azure Resource打标签而烦恼呢?你是否还在因为这样低效的重复劳动而痛苦呢? 在很长一段时间内,笔者既要做云架构调整,又要做日常系统维护,还要参与各种各样的项目,在这种情 ...
- 《C# 语言学习笔记》——委托
委托是一种可以把引用存储为函数的类型. 委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字.委托的声明制定了一个返回类型和一个参数列表. 在定义了委托后,就可以声明该委托类型的变量 ...
- E-R图怎么绘制
E-R图中主要涉及到的元素有: 实体:用长方形表示 关联关系:用菱形表示 属性:用椭圆表示 参考一个例子:
- 如何挑选node docker镜像
如何挑选node docker镜像 在使用Jenkins构建前端项目的时候遇到一点问题: node的版本问题. 由于可能编译的项目历史不同,所依赖的node版本也各有千秋,直接把所有项目都升级到最新的 ...
- <<Modern CMake>> 翻译 1. CMake 介绍
<<Modern CMake>> 翻译 1. CMake 介绍 人们喜欢讨厌构建系统. 仅仅观看 CppCon17 上的演讲,就可以看到开发人员因为构建系统而闹笑话的例子. 这 ...
- springboot整合mybatis时无法读取xml文件解决方法(必读)
转 http://baijiahao.baidu.com/s?id=1588136004120071836&wfr=spider&for=pc 在springboot整合myba ...