分享

软件控制硬件的物理学原理是什么(穿越计算机的迷雾这本书完全可以解释你的疑惑)

 山峰云绕 2019-03-28

       https://m./answer/6672973707759059203/?app=news_article&app_id=26&share_ansid=6672973707759059203 


       (穿越计算机的迷雾这本书完全可以解释你的疑惑)

https://m./answer/6673126511781871886/?app=news_article&app_id=26&share_ansid=6672973707759059203  


    https://m./answer/6673126511781871886/?app=news_article&app_id=26&share_ansid=6672973707759059203


硬件驱动的本质其实是电驱动,而软件代码编译之后其实全部是二进制数字——0和1,故要理解软件控制硬件的原理就要理解0和1如何在软件和硬件中运行

1.0和1的表示——逻辑电平

数字电路中,电压的高低用逻辑电平来表示。例如在TTL门电路中,

  • 大于3.5伏的电压规定为逻辑高电平——表示数字1

  • 小于0.3伏的电压规定为逻辑低电平——表示数字0

2.电路的基本元件——晶体管

晶体管,主要有二极管跟三极管。

  • 二极管,一种具有两个电极的装置,只允许电流由单一方向流过。

  • 三极管,是一种控制电流的半导体器件,作用是把微弱信号放大成幅度值较大的电信号。

3.电路的逻辑运算基础——三种几门逻辑门

下图为三种基本的逻辑门以及他们对应的晶体管电路图

三种门的基本运算称为布尔运算,逻辑与和或门接受两个电平,非门接收一个电平,经过逻辑门后电平变化如下图

其他诸如异或门、与非门等复杂门电路由几门电路组成。例如下图为一个一位加法器。

以一位加法器为基础,可以构建八位加法器

例如计算2 3为例

十进制数在数字电路中先ASCII编码成二进制说00000010和00000011,两者通过八位加法器进行加法运算和进位,最后输出00000101,再ASCII解码成十进制数5,输出。

4.指令集

芯片便是以加法器等其他指令为基础而构建而成的一个计算处理芯片。每个芯片所含有的所有逻辑运算统称为指令集。常见的指令集有电脑端使用的Intel的X86指令集,以及手机使用的ARM的ARM指令集,细分类不展开。这些指令集是嵌入在芯片中的

5.驱动程序

指令集嵌入在芯片中,人是无法调用的,则开发驱动程序,驱动程序的目的是向外给出一个接口,可以供外部其他部件调用本芯片的指令集进行运算处理。

6.软件编程

采用高级语言编写各种程序代码,比如java语言、C语言、C 语言等

7.程序编译

所编写的程序代码通过编译器编译成二进制0和1组成的一段指令,然后这些指令通过与驱动程序匹配,满足匹配条件后将指令传入指令集中进行运算,从而驱动硬件运行,如果还有输出,则再将由0和1的运算结果进行解码(与编码相对于的解码方式,如ASCII Unicode等),结果输出在显示器上,可以查看输出结果。




参考《穿越计算机的迷雾》这本书完全可以解释你的疑惑

硬件也就是机器有它自己的语言,也非常的简单。因为机器的每个部件的功能都是固定的,所以要完成一个复杂的动作,需要把相关的部件按一定的规律有序完成才行,这其中有多复杂想想也应该知道。机器能接受的指令就只有有2个,固定一个动作,做或不做,在计算机中是以2进制标记的,也就是1和0,指令为1,就做该动作一次,指令为0,就不做该动作。大量固定的动作根据一定的规律有序的成功做完,就组成软件中所需要完成的一个功能。

在软件中,需要编程语言,这些编程语言都是高级语言,这些高级语言是为了我们更容易编译操作而编写的,硬件是看不懂的,是需要经过翻译,翻译成为机器语言,然后计算机才看的懂,进而执行简单的操作。无数简单的操作就成了软件所需要的功能,然后通过机器展示出来。

汇编语言是底层语言,直接与硬件接触。是非常麻烦的,代码量大,工作量也吓人,但是,功能和运行速度也强悍的吓人,任何高级语言都无法比拟,算是软件开发真正的核心技术所在。

我们现在所说的软件编程,用的就是比计算机语言高一层的语言,也就是高级语言,像如今流行的语言C/C++用这些高级语言几行代码展示的功能。

硬件是不可能完成你所有想要的功能的,软件可以作为一种翻译语言沟通我们人类的想法和机器,从而实现我们人类的想法。

    

硬件也就是机器有它自己的语言,也非常的简单。因为机器的每个部件的功能都是固定的,所以要完成一个复杂的动作,需要把相关的部件按一定的规律有序完成才行,这其中有多复杂想想也应该知道。机器能接受的指令就只有有2个,固定一个动作,做或不做,在计算机中是以2进制标记的,也就是1和0,指令为1,就做该动作一次,指令为0,就不做该动作。大量固定的动作根据一定的规律有序的成功做完,就组成软件中所需要完成的一个功能。


在软件中,需要编程语言,这些编程语言都是高级语言,这些高级语言是为了我们更容易编译操作而编写的,硬件是看不懂的,是需要经过翻译,翻译成为机器语言,然后计算机才看的懂,进而执行简单的操作。无数简单的操作就成了软件所需要的功能,然后通过机器展示出来。


汇编语言是底层语言,直接与硬件接触。是非常麻烦的,代码量大,工作量也吓人,但是,功能和运行速度也强悍的吓人,任何高级语言都无法比拟,算是软件开发真正的核心技术所在。


我们现在所说的软件编程,用的就是比计算机语言高一层的语言,也就是高级语言,像如今流行的语言C/C++用这些高级语言几行代码展示的功能。


硬件是不可能完成你所有想要的功能的,软件可以作为一种翻译语言沟通我们人类的想法和机器,从而实现我们人类的想法。'

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多