当前位置 : 主页 > 手机开发 > 其它 >

装配 – 机器依赖“意味着什么”?

来源:互联网 收集:自由互联 发布时间:2021-06-22
低级语言和装配级语言取决于机器.我的问题是什么意思?我的意思是它依赖于处理器或机器的功能,如RAM,时钟等. 高级语言如何克服这个问题? 在最深层次,它意味着指令集不同.通过x
低级语言和装配级语言取决于机器.我的问题是什么意思?我的意思是它依赖于处理器或机器的功能,如RAM,时钟等.

高级语言如何克服这个问题?

在最深层次,它意味着指令集不同.通过x86处理器放置特定的位序列将比使用相同的位组通过ARM处理器获得完全不同的结果.

高级语言“克服”了这一点,因为计算机都以不同的方式完成相同的事情. ARM有办法像x86一样添加两个数字,它有办法将数据从RAM加载到寄存器(反之亦然),就像x86一样.

所有高级构造最终都可以简化为可以由所有通用机器执行的基本操作集(尽管某些构造可能在某些CPU上比在其他CPU上更高效).

这就是编译器所做的.它们解析高级语言,并以某种方式将其缩减为目标系统的机器语言.通常只需要为新CPU编写新的编译器位.一些编译器(GCC是一个很好的例子)是在层中构建的,大大简化了这项工作.熟悉编译器和目标平台的单一高技能开发人员可以很容易地生成一个基本端口.

在简单地将结构简化为本机机器语言的水平之上,当然存在输入/输出,文件系统访问等问题.这些通常也是分层处理的,通常只有最低级别 – 驱动程序 – 被重写为一个新的平台,保持与上层的一致的接口.

甚至驱动程序通常可以跨机器类型全部或部分共享! x86平台并不是唯一拥有PCI总线的平台.即使总线不同,连接到它们的设备通常最终都是相同的. Linux在多种机器类型上共享许多设备驱动程序,几乎没有变化.编译器处理转换为机器代码的细节,内核的更多内层试图抽象出其他行为差异,驱动程序编写者必须坚持已建立的接口.

在此过程中,您会遇到在给定平台内,任何特定系统是否具有特定可选设备(或设备类别)的问题.例如,对于大多数服务器而言,拥有3D加速器是愚蠢的.有些系统可能有硬件随机数生成器,有些可能没有.有些可能没有固定存储空间.然而,不合格的“机器依赖”通常不会解决这种依赖程度.

网友评论