1,很多资料都说,exe文件是二进制码(指令),是可以直接被机器执行的;
2,但是,所谓的二进制码(指令)不是因机而异的吗?不同的机器,使用的cpu是不一样的,指令集也不一样,那为什么在一台机器上生成的exe可以在别的不同指令集上的cpu上运行?
3,在我看来,这个所谓的指令,恐怕指的并不是对应硬件的指令,而是对应操作系统的指令吧!恐怕这些资料都在这一点上混淆了!
4,我的一个猜测是,生成的exe其实是由一系列windows操作系统指令组成的!
5,所以,exe文件所谓的可移植性完全是建立在操作系统的基础上的!一个exe文件永远不可能直接运行在linux系统的机器上!
2018.08.02:
1,今天翻到这篇以前写的博客,又查了一下资料,发现以前的猜测是有问题的:
1)exe通常是无法直接运行在linux下的,exe只是windows的可执行程序文件,Linux下应该是不叫exe的;
2)资料上说exe可以运行在不同的机器上,但是这个不同机器都有一个共性,那就是他们的CPU都是x86架构的;