计算机语言与硬件相关,搞懂程序语言与计算机硬件的关系

IT行业程序开发使用到了很多种高级语言比如Java,C,Python,JavaScript,也有个别领域用到了低级语言即汇编语言,这些都是程序语言,程序语言就是人类能够理解的语言,计算机硬件也有语言即机器指令,这些机器指令只有机器能够理解。

下面我整理了下程序语言与计算机硬件的层次,梳理一下,就叫做计算机层次结构吧(事先声明:下文介绍的主要PC机器,服务器,手机的计算机层次结构,其他类型的计算机(超级计算机,量子计算机,模拟计算机等)层次结构会有不同,不做介绍)。

计算机层次结构

计算机层次结构表示的从应用软件级别到晶体管级别的层次结构,如下图所示,左侧为对应层级的相关从业人员或者使用人员,右侧为层次之间的构成情况,如下图所示

218799850_1_20210329065003534

计算机层次结构

1.1应用

这个不必细说,目前我们用到的QQ,微信,支付宝,各类企业应用都属于这一层。

1.2 高级语言

高级语言不涉及计算机底层硬件,所以你开发好的程序,经过合适的编译器编译后(当然也得有),可以在任何计算机硬件上运行。

程序语言有C,Java,Phthon等几十种,每一种都有它的应用场景,下面简单介绍C,Java,Phthon的使用场景。

C语言是高级语言中最底层的,在高级语言中效率也是最高的,主要是用于操作系统,网络协议,驱动程序,监控系统等性能要求比较高的领域,所谓C生万物,几乎所有的其他高级语言的编译器都是基于C实现的,所以C语言可以认为是其他高级语言的祖宗。

Java语言属于一种解释性和编译性都具备的语言,在一些大型的企业应用,网站用得比较多,通过虚拟机,由虚拟机将Java字节码翻译成机器指令。

Phthon语言属于一种解释性语言,与Java类似,它也有自己的解释器,将python文件翻译为机器指令,python主要用于一些数据计算,分析,人工智能,运维领域,这门语言简单,好学,不懂计算机知识的人,也可以很快入门。

1.3 低级语言

低级语言即汇编语言, 高级语言通过合适的汇编器就可以被翻译成汇编语言,汇编语言是程序语言中最底层了,它与计算机硬件相关,每类计算机硬件(相同的指令集架构的硬件可以归为一类)都有各自的汇编语言,例如基于X86 64位的汇编语言,基于ARM的汇编语言,这里所说的X86,ARM指的是指令集体系架构,下个章节会讲到。

汇编语言由于跟计算机硬件是一对一的,紧密关联的,因此通常用于一些跟底层硬件紧密相关的开发工作,目的就是充分发挥这些硬件的优势,比如用C语言开发操作系统时,会用到一些汇编指令,这些汇编指令是某类计算机硬件独有的,通过这些汇编指令,能高效地利用这类计算机硬件的优势,因此汇编语言不能跨硬件。

1.4 机器指令/微体系架构

机器指令是二进制指令,指令的长度通常跟硬件的位数相同,例如X86 64位就表示机器指令的长度是64位,高级语言可以直接通过编译器翻译成机器指令,也可以先通过汇编器翻译成汇编语言,然后再将汇编语言翻译成机器指令,再就是对于一些解释性语言如Java,可以通过编译器翻译为中间指令(字节码),Java的解释器可以解释这些中间指令为机器指令,如下图为C语言和Java语言的编译和解释过程。

218799850_2_20210329065003628

C语言的编译过程

218799850_3_20210329065003816

Java语言解释过程

微体系架构是什么呢,先来说说指令集体系架构(ISA)吧,指令集体系架构就是从汇编程序员的角度看计算机硬件,即计算机硬件提供些什么机器指令,有多少种指令,每种指令的格式,数据和指令的长度(64位还是32位),有哪些寄存器存储临时数据,数据以什么样的方式进行存储等,它是一套标准规范。

微体系架构就是指令集体系架构的具体实现,汇编程序员只知道采用 ADD P,Q,N的汇编指令可以实现加法运算,不需要考虑它是怎么实现的,具体实现由微体系架构进行处理。

1.5 晶体管

晶体管是一种控制电流流动的装置,其实就是一个开关,打开开关,电流通了,关闭开关,电流断了,怎么来打开和关闭开关呢,是通过电子的方式来实现的,主要原理就是通过在晶体硅的基础上,利用P型和N型,氧化硅(一种绝缘玻璃)以及晶体管连接到其他部分的金属导线,形成MOSFET电路,是不是有点抽象,可以忽略这个概念,只要明白晶体管就是一个电子开关就可以了,看下图

218799850_4_20210329065003925

正极晶体管

当栅极加正电压时,源极与漏极之间的电阻减小,电流从源极流向漏极。

218799850_5_2021032906500481

负极晶体管

当栅极加负电压时,源极与漏极之间的电阻减小,电流从源极流向漏极。

所以可以根据这两类晶体管互相连接,形成各类的逻辑门,以非门为例

218799850_6_20210329065004175

非逻辑门

当输入1电压即正电压时,下方的晶体管电流通过,零电压输出,所以输出0。

当输入0电压即负电压时,上方的晶体管电流通过,正电压输出,所以输出1。

其他逻辑门不再阐述,都是通过晶体管连接而成。

1.6 逻辑门

正如1.5章节说的,晶体管有两种状态,要么有电流通过,要么没有电流通过,因此可以通过这两种状态进行任意的逻辑组合,可以形成与门,或门,与非门,或非门,非门,异或门等常用的逻辑门。

218799850_7_20210329065004316

与门

A

0

0

1

1B

0

1

0

1A and B

0

0

0

1

218799850_8_20210329065004363

或门

ABA or B

0

0

1

10

1

0

10

1

1

1

218799850_9_20210329065004411

与非门

A

0

0

1

1B

0

1

0

1A nand B

1

1

1

0

218799850_10_20210329065004456

或非门

A

0

0

1

1B

0

1

0

1A nor B

1

0

0

0

218799850_11_20210329065004488

异或门

A

0

0

1

1B

0

1

0

1A xor B

0

1

1

0

218799850_12_20210329065004550

非门

A

0

1not A

1

0

逻辑门可以进行任意连组合,如下图

218799850_13_20210329065004598

任意逻辑门组合

上图有3个输入即X,Y,Z,它的布尔表达式为

X and (Z nor (not Y))

将或非逻辑门转化后即 X and not (Z or (not Y)),它的输出真值表为

X

0

0

0

0

1

1

1

1Y

0

0

1

1

0

0

1

1Z

0

1

0

1

0

1

0

1A

1

1

0

0

1

1

0

0B

0

0

1

0

0

0

1

0C

1

1

1

1

1

1

0

1输出

0

0

0

0

0

0

1

0

1.7 集成电路

通过逻辑门的任意组合可以形成各类逻辑电路,如锁存器,触发器,时钟等。

锁存器

可以通过一个开关,打开开关后,输入的值可以直接连接到输出,关闭开关后,输入的值无效,从而可以保留上一次输出的值,这样的话,多个锁存器组合起来就可以实现寄存器了。

触发器

连续相同的输入可以被忽略,只有当输入发生变化时,触发器才会响应输出,例如0变成1,1变成0,触发器将会触发,如果输入连续不变,则触发器不会触发,可以通过触发器实现二进制计数器,译码器等。

时钟

可以通过非门实现,非门的输出作为输入,就可以形成连续的0101,持续不断地发送电路信号。

将任意个逻辑电路进行组合集成就是集成电路,可以形成诸如寄存器,ALU(逻辑算数单元),时钟等,这些设计就比较复杂了,不再详述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rg1 蓝光危害rg0_蓝光危害IEC 62778 测试什么

EN IEC62778蓝光危害标准检测哪里可以做,什么产品要做EN IEC62778标准蓝光危害检测 优耐检测专业EN IEC62778蓝光危害标准检测实验室。二、IECTR 62778内容概要及其应用在IEC 60598-1第8版中标记和结构要求中增加的蓝光危害的相关要求中,在引出一些新的概…

HTML+CSS+JS 实现 ❤️全屏图片手风琴效果❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

windows7计算机管理,win7系统打开计算机管理(compmgmt.msc)的操作方法

今天和大家分享一下关于对win7系统打开计算机管理(compmgmt.msc)设置的方法,在使用win7系统的过程中经常不知道如何去对win7系统打开计算机管理(compmgmt.msc)进行设置,有什么好的办法去设置win7系统打开计算机管理(compmgmt.msc)呢?在这里小…

HTML+CSS+JS实现3D爱心跳动特效

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李阳勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

自带容器_什么是衬胶容器罐以及质量标准?

什么是衬胶容器罐?衬胶容器罐就是防腐衬胶罐。预硫化丁基橡胶硬质板是新开发出来的新的防腐衬胶罐衬里材料,这种材料主要是丁基橡胶和专用粘合剂经过轧压硫化制成的预硫化橡胶板。并且这种材料一般厂家都会提供专用的粘合剂,在衬胶检修处理缺…

HTML+CSS+JS实现 ❤️ 宇宙星球旋转动画特效❤️

代码目录: 主要代码实现: css样式: /*** date 2021/1/20 16:10*//* 取消默认间距 */* {margin: 0;padding: 0; }a {text-decoration: none;color: #fff;outline: none }.container {width: 100%;height: 100%;background: url(../img/allS…

java制作扫雷游戏中埋雷的难点_月薪30K程序员花了一个小时,用c++做出经典扫雷游戏 !...

上次发过一个俄罗斯方块的游戏源码,由于是通过Easy X实现的,但是很多和我一样的新手,一开始不知道Easy X是什么,到时源码拿过去之后,运行报错,我这次发的扫雷,也是通过Easy X实现,Ea…

HTML+CSS+JS实现 ❤️ 团队人物图片蜂巢布局❤️

代码目录: 主要代码实现: css样式: html, body {height: 100%;margin: auto;--wrp: 800px;width: var(--wrp); }body {background: center/1.6% #f5f5f5 url(data:image/svgxml,%3Csvg xmlns"http://www.w3.org/2000/svg" width&q…

设置中文环境_我花几年时间找到的学习中文好方法,值得你一看

最近挺多朋友问关于我家小C是如何学习中文汉字的,其实我也一直挺想写这方面的内容的,但真的是很纠结。说起这个过程,就是一把眼泪一把鼻涕的辛酸,因为对于海外党来说,学中文真的是太艰辛了!在孩子学习中文过…

重装系统无法在计算机上运行,开机无法进入系统?重装系统开机不能进入系统怎么办...

电脑卡顿、运行缓慢、蓝屏崩溃,在电脑出现这些问题的时候,我们都会选择重装系统来解决这些问题。然而在重装系统过程中,有时候出现意外,导致重装系统后进不了系统。重装系统开机进不了系统,我们应该怎么办呢&#xff1…

HTML+CSS+JS实现 ❤️ 粒子倒计时特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

恒企自考_致自考生:想自考的人千千万万,遇到的困难却千篇一律

今天我们就一起来聊聊,自考路上,都有哪些困难,以及要如何解决!先看一下,已经在路上的考生们他们觉的自考难在哪里?:从上图来看,总的来说就是“记忆力不行”“自律能力差”“没法安静…

HTML+CSS+JS实现 ❤️ 科技感的数字时钟特效❤️

代码目录: 主要代码实现: css样式 : charset "utf-8"; import url("https://fonts.googleapis.com/css?familyShareTechMono"); html, body {height: 100%; }body {background: #0f3854;background: radial-gradient(ellipse at c…

HTML+CSS+JS实现 ❤️ 卡西欧手表图形特效❤️

代码目录: 主要代码实现: css样式: import url(https://fonts.googleapis.com/css2?familyGidugu&familyMichroma&displayswap); font-face {font-family: "DSEG7 Classic";src: url(https://manzdev.github.io/twitch-c…

HTML+CSS+JS实现 ❤️ 立方体旋转图片切换特效❤️

效果演示: 代码目录: 主要代码实现: css样式: /*Full-page view:https://codepen.io/GeorgePark/full/gegavO/*/import url(https://fonts.googleapis.com/css?familyMontserrat:500); :root {/* Base font size */font-size: 1…

湖北大学计算机考研怎么样,湖北大学研究生好考吗 复试难吗

考取湖北大学的研究生比较容易。考研难易主要看招生单位所处的地域、名气、排名等,因为报考生源不同。一般来说发达地区特别是大城市的重点大学都难考,而非重点大学则相对好考。湖北大学是非211高校,所在城市位于湖北。湖北大学研究生好考吗1…

区分错误类型_牛鹭学院:Bug类型解析及其常见实例介绍

软件测试中,bug的类型有很多种,比如:代码错误、界面优化、设计缺陷、需求补充和用户体验等;一般情况下,需求补充和设计缺陷比较好区分,但是代码错误、界面优化和用户体验区分不是很明显;下面我们…

HTML+CSS+JS实现 ❤️酷炫的时光隧道旅行动特效❤️

效果演示: 代码目录: 主要代码实现: css样式: html, body {width: 100%;height: 100%;overflow: hidden; }body {background: #000;text-align: center; }body::before {content: "";display: inline-block;height: 10…

HTML+CSS+JS实现 ❤️夜晚云层动画特效❤️

效果演示: 基于css3 keyframes 属性制作乌云密布云层动画,夜晚云层飘过动画特效。可用于网页动态云层背景特效。利用animation 和png云图片制作完成。 代码目录: 主要代码实现: css样式: html, body {width: 100%;he…

HTML+CSS+JS实现 ❤️3D悬浮粒子翻转动效❤️

效果演示&#xff1a; three基于canvas制作全屏的3D方块粒子悬停&#xff0c;跟随鼠标移动3D翻转动画特效。支持360度无死角翻转效果。 代码目录&#xff1a; 主要代码实现&#xff1a; html代码 : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu…