C++底层系统观(二)----硬件怎么玩

咱先不讲语言,先从硬件层面形象的解释下CPU是怎么完成各种功能的

    int a, b, c;
    cin >> a >> b;
    c = a + b;

这里C++代码 只有三行 看看要实现这样的功能 硬件做了什么

CPU读入指令

   cin >> a >> b;

   CPU:我刚接收到组织的任务 要我们获取两个整数 然后放到组织提供的两个内存地址对应的内存里面    键盘:好的 如果有人敲我 我会通知你     CPU: 好的呢   CPU: 用户敲了个 1 显卡 你快去把 1 的图像信息存到你的显存里面 那样我们的屏幕兄弟就能读取你的显存 点亮它对应的LED灯泡 显示给用户看 让用户知道自己敲了个 1   显卡:遵命   ...直到用户敲入了 1 2 按下了回车     CPU:哎呀妈呀 可按回车了 快快快 内存 把这 1 和 2 从你的输入缓冲区内存 运送到 a 和 b 的内存里面去 完成 a=1 b=2   内存:嗯 已经搞完了   CPU:我又受到组织的任务 他要 我们开辟个内存空间 C 然后把 a+b存进去   CPU:a+b我已经算出来了 我刚才申请了个内存地址 来 内存兄弟 把a+b存在这个内存地址里   内存:OK

总结:内存条 就专门负责存和读取数据 CPU把要读取的地址给内存条 内存条 就找到这个内存把里面的值取出来 给CPU    显示卡 显示卡也有个存储数据的地方叫做显存 屏幕读取显存可以知道自己那个灯泡需要发光  键盘 键盘每当有人敲它 他就告诉别人  (实际上内存有一块区域 存着键盘的按键情况 键盘被敲 就改变了这段内存的数值 CPU通过读取这段内存来知道键盘按键状态)
时间: 2024-10-26 05:52:36

C++底层系统观(二)----硬件怎么玩的相关文章

C++底层系统观(一)----汇编语言诞生

计算机是怎么运行的? 首先看CPU 看,这是CPU CPU只能运行二进制代码 就像这样 101100000000000000000011 000010100000000001100000 ...... 回到CPU刚刚诞生的时代 那时候只能用0和1编程 那要写死人 ...... 聪明又勤奋的程序员 用0和1写了个 文本编辑程序 所谓文本编辑程序 就是我键盘什么敲一个m 你显示器就显示我敲出了m 还可以保存我敲的所有字母. 有了文本编辑器 他们就可以再写个转换器 用来实现轻松码代码 10110000

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

极客学院开源硬件视频教程 玩转Arduino

玩转Arduino 极客学院开源硬件视频教程玩转 Arduino --数据通信:串口通信玩转Arduino--周边模块:执行部件玩转Arduino-周边模块-传感器部件(1)玩转 Arduino --周边模块-传感器部件(2) 下载地址:http://www.feixueteam.net/thread-840-1-1.html

web多终端开发学习系列(二)--- 硬件交互框架Phonegap学习

目前对于移动端.桌面端的原生开发各平台都有各自的开发语言.开发工具等.如果要开发出一个适配多个终端的系统,我们需要用各自的平台工具分别开发出各自的应用,这对于一个团队或者一个开发人员来说要求非常高,并且非常耗时.前一篇学习了Bootstrap框架,对于多终端的界面适配有了解决方案.但一个系统除了与用户之间的交互外,其内部还可能需要与硬件进行交互来实现某些特殊需求,比如摄像头的调用,相册的获取等等.对于这些硬件的调用我们可以选择Phonegap. 介绍 Phonegap是一个适配多个终端进行硬件交

玩转Google开源C++单元测试框架Google Test系列(转载)

越来越多公司采用敏捷开发,单元和回归测试越来越重要,GTest作为最佳C++单元测试工具越来越多的被使用.转自 http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的

Python将文本生成二维码

#coding:utf-8 ''' Python生成二维码 v1.0 主要将文本生成二维码图片 测试一:将文本生成白底黑字的二维码图片 测试二:将文本生成带logo的二维码图片 ''' __author__ = 'Xue' import qrcode from PIL import Image import os #生成二维码图片 def make_qr(str,save): qr=qrcode.QRCode( version=4, #生成二维码尺寸的大小 1-40 1:21*21(21+(n-

转:玩转Google开源C++单元测试框架Google Test系列

转自http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉

玩转Google开源C++单元测试框架Google Test系列(gtest)(转)

转自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代

想成为一个优秀的硬件工程师,你需要具备这些能力!

一个好的硬件工程师实际上就是一个项目经理,你需要从外界交流获取对自己设计的需求,然后汇总,分析成具体的硬件实现.还要跟众多的芯片和方案供应商联系,从中挑选出合适的方案,当原理图完成后,你需要组织同事来进行配合评审和检查,还要和CAD工程师一起工作来完成PCB的设计.与此同时,要准备好BOM清单,开始采购和准备物料,联系加工厂家完成板的贴装." 基本知识 1) 基本设计规范 2) CPU基本知识.架构.性能及选型指导 3) MOTOROLA公司的PowerPC系列基本知识.性能详解及选型指导 4)