0

将程序写入高级语言,然后将高级语言转换为机器语言,机器语言是一组操作码。我想问为什么有些程序与 Windows 兼容,而有些程序与 MAC 兼容,因为当它们被编译时,它们只是操作码。

4

1 回答 1

0

因为程序依赖于操作系统中已经存在的功能,例如 ReadFile 或 ShowMessage,并且某些操作系统具有不同的架构,因此它们具有不同的功能。实际的计算和东西是一样的

举个例子:想象一下 Mac OS 有一个叫做 ReadFile 的函数。Windows 有一个名为 GetFile 的函数。Linux 有一个名为“OpenFile”的函数。当你编译你的程序时,它不会将这些函数包含到它的代码中。“操作码”只是说“调用地址#xxxxxx 处的函数”所以如果你在windows 中执行此操作,操作系统将在#xxxxxxx 处准备好GetFile 函数,因此你的程序将执行。但是如果你把你的程序复制到Mac上,操作系统的设置就不同了,所以#xxxxx处没有功能等着你,所以程序失败了。

实际上,它在到达那里之前就失败了,因为操作系统在运行它们之前会查看代码,所以看看它们是否兼容

它不仅仅是像“readFile”这样的函数。几乎所有程序都涉及为您的变量获取一些内存,并且每个操作系统的执行方式不同(即,它们在不同的地址 #xxxx 具有不同的函数来获取内存),因此您的程序一旦被编译就无法在任何其他操作系统上运行.

于 2013-11-11T20:39:20.873 回答