程序与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 后端知识图谱,从小白到大牛要走的路都在 ...
随机推荐
- Java调用方法参数究竟是传值还是传址?
之前阅读<Head First Java>的时候,记得里面有提到过,Java在调用方法,传递参数的时候,采用的是pass-by-copy的方法,传递一份内容的拷贝,即传值.举一个最简单的例 ...
- 【LightOJ - 1370】Bi-shoe and Phi-shoe
Bi-shoe and Phi-shoe Descriptions: 给出一些数字,对于每个数字找到一个欧拉函数值大于等于这个数的数,求找到的所有数的最小和. Input 输入以整数T(≤100)开始 ...
- 【原创】用事实说话,Firefox 的性能是 Chrome 的 2 倍,Edge 的 4 倍,IE11 的 6 倍!
前言 每个浏览器新版本发布,都号称性能有显著提升,并且市面有各种测试工具,测试结果也是大相径庭,比如下面这篇文章: https://www.oschina.net/news/97924/browser ...
- IDEA及IDEA汉化包
IDEA 官网:http://www.jetbrains.com/idea/download/#section=windows IDEA社区版(百度云):http://pan.baidu.com/s/ ...
- kaptcha谷歌验证码工具
Kaptcha 简介 Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如: 验证码的字体 验证码字体的大小 验证码字体的字体颜色 验证码内容的范围(数字,字母,中文汉字!) 验证 ...
- JavaScript-基本语法和数据类型
前奏:在HTML中使用JavaScript 1_推荐src引用外部JavaScript文件,方便管理与维护,标签位置在页面最下面,使浏览器更优先加载页面内容. 2_HTML页面需要有标准 ...
- Pyenv虚拟环境的创建(虚拟机)
创建pyenv虚拟环境 sudo yum install openssl* 安装其所需要的库文件 git clone https://github.com/yyuu/pyenv.git ~/.pyen ...
- solidity智能合约字节数最大值及缩减字节数
智能合约最大字节数 在Solidity中,EIP 170将contract的最大大小限制为24 KB .因此,如果智能合约内容过多,会导致无法进行发布操作. 减少压缩字节数方法 方法及变量命名 在一定 ...
- C语言编程学习打造——做题游戏
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 【React踩坑记一】React项目中禁用浏览器双击选中文字的功能
常规项目,我们只需要给标签加一个onselectstart事件,return false就可以 例: <div onselectstart="return false;" & ...