我爱学习网 52xx.cn我爱学习网菜单按钮
  • 搜索

同一个程序能在不同的计算机上运行吗?

我们知道,无论多么复杂的应用程序都可以被简单看成是指令和数据的集合。理论上说,应用程序里的指令可以分成两类。第一类指令是要求计算机硬件(主要是CPU)完成特定的运算和操作(例如数据传输、加减乘除、移位、跳转等),这一类指令常常被称为CPU的指令集。不同的CPU有不同的指令集,比如“0000 0001 0011 0010”就是一条指令,计算机里的指令和数据都是用二进制表示的。假设在英特尔的X86 CPU的指令集中某指令代表加法,在IBM的Power CPU的指令集中它很可能代表其他操作。非常明显,试图在Power CPU上运行由一系列X86 CPU的指令组成的程序是“鸡同鸭讲”,是不可能得到正确执行的。

应用程序里的第二类指令用于向操作系统请求特定的服务。操作系统(广义上说还应该包含建立在操作系统上的运行时函数库)提供了应用程序接口API来服务于应用程序。一个操作系统可以提供成千上万的API,典型的应用程序接口包括分配和释放内存、创建/打开/关闭/读写文件、在网络上接收/发送数据、创建/绘制窗口等。不同的操作系统提供的服务也不尽相同,应用程序的开发者必须事先知道针对的操作系统,然后才能使用正确的操作系统API来实现软件的功能,因此应用程序总是针对某个特定的操作系统的。

PC机是基于X86 CPU和Windows操作系统的。2006年以前,苹果公司的Mac机是基于Power处理器和Mac OS操作系统的。无论是CPU的指令集还是操作系统的API, PC机上的应用程序都不能和Mac机兼容,自然就不能在Mac机上运行了。