关于问题exe文件是机器语言,为什么mac不能运行Windows的exe文件?一共有5位热心网友为你解答:
【1】、来自网友【速码爵士】的最佳回答:
把exe等同于机器指令这是很多人的误解,其实Exe并不完全是机器语言指令,它只是个存放机器指令的容器,本质上和Office .doc文件类似,exe的后缀名在注册表里也有关联项,Windows看到你双击了exe就会启动相应的装载器加载并执行。不同的是转载器内置在win里面。
这个文件容器里除了指令外还含有众多的其他信息,比如和执行相关的:装入内存后用于配置运行内存用的各种符号地址表格,和执行无关的各种资源:任何数据文件都可以打包进exe容器里。你甚至可以把任意文件添加到exe的屁股后面,这样的exe仍能正常运行。
只要CPU指令兼容,比如x64的Mac是完全可以运行原生的x64 exe的,主要问题其实只有两个,1.exe文件装载器(把指令装到内存里配置好执行环境),2.需要各种依赖的运行库(如user32,kernel32等等)。
免费开源的wine就是专门用来干上面2件事的。在Mac下通过homebrew安装wine,最新的arm架构的Mac下需要安装crossover,然后就可以用wine指令把exe给跑起来。只要CPU架构一致,wine实际是原生运行exe中的指令,完全不靠虚拟机。
就我而言,工作里大部分情况都在Mac 下交叉编译开发windows的程序(exe或dll),在Mac下直接运行exe用于验证逻辑也是个硬性需求, 因此wine是一个非常有用的工具。
【2】、来自网友【RGNSJM】的最佳回答:
中文是人类语言,为什么美国人听不懂?[捂脸]
【3】、来自网友【griphin】的最佳回答:
别说windows和MAC这两种截然不同的系统了,即便同样是Windows,Win98程序大概率都不能在win10下跑。
EXE文件不是机器语言,而是是被转换成机器语言的二进制文件,也就是01的组合。但是不同平台对01的组合规则是不一样的。同样是掰手指数数,大拇指和食指的组合,欧洲人认为是二,而中国人认为是八。
抛开架构和平台不说,绝大多数的软件,并不是靠一个EXE文件就能跑起来的,它是一个文件团队,很多必须的资源,是系统提供的,两个不一样的系统,怎么调用?你在中国做电商,需要调用国家提供的支付环境和物流运输系统。你现在把公司搬到美国,你还能继续全国包邮,支付系统继续使用微信支付宝么?
【4】、来自网友【古海2021】的最佳回答:
这是操作系统影响的!
exe文件和mac可执行文件,在底层,都是硬件能认识的二进制格式指令。
但指令的执行不仅仅有可执行文件里二进制指令就能运行,它还得调用系统里库的二进制指令,但windows的exe文件在mac系统里就找不到需要的库指令,因为寻找方法和格式都固定了,反过来也一样。
再另外每种文件格式都有自己的文性属性识别标记,它mac打开exe文件,不给执行属性,你就没得运行可能。
当然你是可以做到在mac里摸拟一个exe运行环境,让exe在里面运行,反之亦然。
【5】、来自网友【悠闲的映日红】的最佳回答:
举个简单的例子:
小张和小李大学是同班同学,都是学的机械设计,大学毕业后一起找到了同样机械设计的工作工作,不过小张在A公司,小李在B公司。
那么问题来了,学了同样知识的两个人,可以互换公司上班吗?
详细模拟一下,首先进办公楼时,保安要求刷卡签到(程序加载),发现无法通过,因为员工卡(win与mac的程序签名)不同。
其次,进大楼后,找不到自己的工位(一个在15楼工作,一个在4楼工作)。
再次,协调工作的联系人(领导上下级)不同(程序调用接口不同)。
所以,exe程序无法在mac下使用,反之亦然。如果想使用,如果是采用的c语言,需要重新编译(相当于重新发放员工卡,分座位,安排相关联系人)。
以上就是关于问题【exe文件是机器语言,为什么mac不能运行Windows的exe文件?】的全部回答,希望能对大家有所帮助,内容收集于网络仅供参考,如要实行请慎重,任何后果与本站无关!