高级语言如何克服这个问题?
解决方法
高级语言“克服”了这一点,因为计算机都以不同的方式完成相同的事情. ARM有办法像x86一样添加两个数字,它有办法将数据从RAM加载到寄存器(反之亦然),就像x86一样.
所有高级构造最终都可以简化为可以由所有通用机器执行的基本操作集(尽管某些构造可能在某些cpu上比在其他cpu上更高效).
这就是编译器所做的.它们解析高级语言,并以某种方式将其缩减为目标系统的机器语言.通常只需要为新cpu编写新的编译器位.一些编译器(GCC是一个很好的例子)是在层中构建的,大大简化了这项工作.熟悉编译器和目标平台的单一高技能开发人员可以很容易地生成一个基本端口.
在简单地将结构简化为本机机器语言的水平之上,当然存在输入/输出,文件系统访问等问题.这些通常也是分层处理的,通常只有最低级别 – 驱动程序 – 被重写为一个新的平台,保持与上层的一致的接口.
甚至驱动程序通常可以跨机器类型全部或部分共享! x86平台并不是唯一拥有PCI总线的平台.即使总线不同,连接到它们的设备通常最终都是相同的. Linux在多种机器类型上共享许多设备驱动程序,几乎没有变化.编译器处理转换为机器代码的细节,内核的更多内层试图抽象出其他行为差异,驱动程序编写者必须坚持已建立的接口.
在此过程中,您会遇到在给定平台内,任何特定系统是否具有特定可选设备(或设备类别)的问题.例如,对于大多数服务器而言,拥有3D加速器是愚蠢的.有些系统可能有硬件随机数生成器,有些可能没有.有些可能没有固定存储空间.然而,不合格的“机器依赖”通常不会解决这种依赖程度.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。