2022-01-18 作者 :觉醒网站网 围观 : 0次
大家好,今天小编关注到一个比较有意思的话题,就是关于建站总控系统源码的问题,于是小编就整理了1个相关介绍建站总控系统源码的解答,让我们一起看看吧。
提前备注:回答比较硬核,我会尽量软化,但想了解知识还是需要耐心。CPU内传输的信号有两种:高电压和低电压,分别代表数字信号“1”和“0”,因此CPU唯一能理解(问题中的“认识”)的语言就是由“1”和“0”写成的机器语言。
由于程序(代码)存储在电脑硬盘中时,也是“1”和“0”的形式,是否就意味着,只要程序存到硬盘中,CPU就能认识呢?
答案是CPU仍然看不懂这些程序,因为以“1”和“0”形式存储的程序和以“1”和“0”写成的语言完全是两回事,两者的区别类似于汉语书和英语书都用纸和油墨印制,但依然是两种不同的语言,不会英语的依然看不懂英语书。
要让CPU能看懂代码,要做相当多的工作。
现在的程序都是由C++和Java等高级语言写成,这些语言是为方便人类编程发明的,不是为方便电脑执行而设计。
说到这里,需要进一步说说机器语言和高级语言的差别。机器语言的最大特点是面向计算机硬件编程,简单说就是程序员需要通晓计算机硬件知识,写的程序要真实表示数据是如何被计算机操纵的。对程序员来说这就比较头大,毕竟上得了“厅堂”下得了“厨房”只有少数大神能做到,加上机器语言纯用“0”和“1”序列组成,既对视力是一种摧残,也是对编程趣味的扼杀。
于是,有一帮人开始琢磨了:能不能将计算机硬件从编程中分离出来,让硬件知识小白也能编程?
最先开窍的是蓝色巨人IBM,它在其System/360计算机中引入了ISA(Instruction Set Architecture)概念,将编程所需要了解的硬件信息从硬件中抽象出来,这样编程人员就可以面向ISA编程。由于ISA是用来描述编程时用到的抽象机器(不是具体的电脑CPU),包括了一套指令集和一些寄存器,因此,程序员只要知道ISA,不需要了解具体的硬件知识(每一两年硬件都会换新),就可以编写程序,在ISA相同的电脑上运行。
这样一来,程序员不必了解过于专业的计算机硬件知识,不需要下得了厅堂,可以专心在“厨房”烹调程序大餐。
由此也可以看出,程序员很多都是不了解计算机硬件的,所以妹子们不要指望自己的程序员男朋友给你DIY电脑,或者电脑坏了,他能给你省下一笔修理费。他说不会修,那就是真的不会修。
如果你是一个程序员,你写过很多代码,那么现在要你写一段程序,计算50.00*0.1的值。
你也许会这样写:
代码你很快写完了,如果没有和其他人交流,可能只是你自己看了,而抱歉的是CPU也不认识你写的是啥。
CPU不知道也不管你是用什么语言写的代码,那是给人阅读的,不是给CPU阅读的,CPU只懂得编译过的二进制指令,也就是一大串的0和1,还必须按照商家设计好的指令体系编制的指令序列才行。至于你写的那些牛B的代码,CPU并不买账,它好不好用在于编译器或解释器把这些人类代码翻译为机器码有多高明。
这就是编译器存在的原因了,编译器将我们写的程序编译成可供CPU执行的二进制代码,并且分配指令和内存的地址等这类复杂的工作。
一个程序的执行流程总体上可以分为3个步骤:磁盘->RAM(内存)->CPU
即程序从磁盘拷贝到内存中,CPU从内存中取指令,然后解码,之后执行,最后将执行结果写回内存。
硬件产商约定好了一套指令体系,不管什么编程语言都通过某种方式把代码编译为CPU能懂的二进制指令指挥CPU工作。
我是电子及工控技术,我来回答这个问题。作为中央处理器的CPU是无法识别我们人类编写的程序代码的,而CPU所能够识别的“语言”其实很简单,就是由“1”和“0”组成的数字串。而由“1”和“0”组成的数字串对于我们人类来说“读懂”它的含义也会感觉到一脸的茫然。鉴于这种在人脑和电脑CPU两者无法直接“交流”的情况下,人类又一次发挥了他极具创造性的想法发明了编译器。编译器的出现搭起了人类大脑和电脑CPU的沟通的桥梁与纽带。
由于CPU是一个极为庞大的集成电路,为了说明问题我们用其中一个极为简单的数字处理电路为例来说明CPU是如何“认识”我们人类编写的代码的。我们知道CPU中包含着数量众多的绝缘栅晶体管(MOSFET),在这些众多的绝缘栅晶体管(MOSFET)中分为两类,一类是P沟道的绝缘栅晶体管、另一类是N沟道的绝缘栅晶体管。
对于P沟道的绝缘栅晶体管来说,当给它的输入端加一个“1”时(高电平)时该管子就会处于“关闭”状态,当给它的输入端加一个“0”时(低电平)时该管子就会处于“打开”状态。
对于N沟道的绝缘栅晶体管来说,当给它的输入端加一个“0”时(低电平)时该管子就会处于“关闭”状态,当给它的输入端加一个“1”时(高电平)时该管子就会处于“打开”状态。因此根据这些MOS管的特点在任何一种输入条件下PMOS和NMOS都不会处于同时打开的状态。因此在CPU中就有用这些MOS管组成的与非门电路和或非门电路。因此就可以执行逻辑运算,所以说逻辑运算也是CPU的功能之一。
那么下一个问题是我们使用计算机语言编写的程序,比如常用的C语言或者汇编语言等等都有逻辑表达式或者逻辑指令,编写好一个逻辑运算的程序后要通过刚才讲的编译器对源程序进行编译生成CPU能够识别的“语言”(二进制代码)。又由于这个机器语言(二进制代码)与我们编写的逻辑运算程序是一一对应的,因此只要把这段代码“灌进”CPU的内部他就会按照我们人类的要求运作起来了,从而也就能够“认识”我们人类所写的代码了。
CPU其实只认识“0”和“1”
我们经常会听说到某某芯片由多少百亿个晶体管组成这样的科技新闻。没错,CPU就是超大规模的集成电路,由数量超级多的晶体管组成,而晶体管只有“开”和“关”两种状态,刚好可以用“0”和“1”来代表这两种状态,所以CPU是采用二进制来进行运算的。
CPU是Central Processing Unit的缩写,中文名全称为中央处理器。CPU的组成包括了运算逻辑、寄存器和控制部件,它可以解释指令和进行数据运算处理。因为CPU本身就是超大规模的数字电路,只认识“0”和“1”,所以所有的指令和数据都需要由“0”和“1”组成。
所有运算逻辑我们都可以理解为“与”,“或”,“非”,“异或”四种哦
与门:多个条件中,所有条件成立才算成立,
或门:多个条件中,只要有一个条件成立,就算成立
非门:其实就是反相
异或门:可以理解为,两个条件不一样,才算成立
当然还可以由这四种门延申出“与非门”,“或非门”,“与或非门”,“异或非门”等。
上面说到CPU只认识“0”和“1”,那它为什么可以运行我们的程序呢?CPU的确不可以直接运行我们编写的程序。但如果直接只用“0”和“1”的组合来写程序,那是相当的烦所,也难以找到错误,是非常不现实的。聪明的人类为了解决这个大麻烦,就发明了汇编语言,用一些容易理解和记忆的字符来代替“0”和“1”组成的指令。
例如:
CPU也叫中央处理器或中央处理单元,主要由运算器和控制器构成。运算器(ALU),顾名思义,主要负责运算,主要包括算术运算和逻辑运算,当然其基本的构成是由逻辑门电路构成的。控制器,主要负责程序运行的相关控制工作。以单片微型计算机的工作原理简单来讲(计算机的工作过程类似),CPU的主要工作就是读取指令,执行指令。CPU在时钟电路及控制器的相关控制下,可以根据程序计数器(存放ROM存储单元地址,相当于一个地址计数器,指向ROM单元,读取ROM中的一条指令后,会自动的根据程序指令,进行地址加一,从而指向下一条指令)的指引从ROM当中,读取指令代码,也就是01二进制代码,然后送入指令寄存器,接着进入译码器进行译码,通过译码就知道了程序指令的功能,然后根据指令的操作,通过相关的总线把数据送到运算器中去运算,运算的过程中需要用到数据,去RAM中查找数据,执行代码后的结果保存在相关的寄存器中。执行完当前的指令后,程序计数器会指向下一条指令。CPU就是这样,按照控制器的控制,在时钟电路的控制下,有条不紊的读取指令,执行指令的。如果想具体了解CPU的工作原理,必然要学习微机原理,学习汇编语言,这样才会有更加深入的体会。
什么是代码?代者,替换也。
假如你设计一个数字电路,包括一个加法器和一个乘法器。
你希望根据需要,有时对输入数据做加法,有时对输入做乘法,该怎样做呢?
显而易见的方法是手工控制加法器和乘法器的使能端,每次只让一个电路工作。那么当两个使能端为01,就是加法器工作,是10,就是乘法器工作。
然后为了让电路根据要求的顺序做加法和乘法,你把一系列01、10存储起来,当你要做加法,加法,乘法,加法时,存储的就是01011001。你增加了一个时序电路,每次读出两个位,把高低电平加在两个使能端上,替代你的手工接线。01和10这两个数码能控制电路的行为,起名叫机器码。
然而这样二进制的东西并不好记忆。于是你给01起了个名字,叫add,10起名叫mul。你的这组运算就记为add,add,mul,add。
add,mul这种助记符,就叫代码,具体说是汇编代码;你会找一个悲催的助手,帮你把代码替换成01,10这种机械码。
由代码翻译成机器码的过程,后来也由机器来做,这种机器(软件)就叫编译器。
因此所谓cpu认识代码,是一种拟人化的修辞,偏文艺了。cpu只是一种根据高低电平输入,产生特定的高低电平输出的机器。代码不过是助记符。
后来你觉得add,add,add,add,add这类写法太烦,于是发明了五连加,7连乘之类的写法——高级语言代码诞生了。
到此,以上就是小编对于建站总控系统源码的问题就介绍到这了,希望介绍关于建站总控系统源码的1点解答对大家有用。