程序的移植性问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:35:21
每个CPU应该都有自己的指令集吧,这样的话如果我将一台电脑上的C++源文件编译生成的exe文件放到另一台电脑上是不是应该跑不起来?但是事实上网上下载的exe文件却能在电脑上运行起来,所以我就不明白我哪里理解有误了(不知道我对exe文件的理解对不对,我一直以为exe文件里边包含着程序的机器码),请高人指点指点

1、首先不是每个cpu的指令集都不同,指令集可能是几种或者几十种,那个有限的。
2、你忽略了一点,exe是windows下的可执行文件。windows是前提。为什么这么说,你不能忽略OS这一层。你的exe是交给OS,OS去执行它。
3、如果你写过c程序,嵌套汇编去获取cpu的id或者其它的信息的时候,你就能看到,针对不同类型的和品牌要写不用的汇编语句,intel、amd它们的获取方式不同。这个才是接近cpu的代码。说白了exe也只不过是一个包装而已。
4、都是windows,你的exe为什么在别人机器跑不起来呢,不要忽略你写代码编译的时候,是在操作系统之上进行的。

C++源文件是不可移植的,但是EXE程序文件是通过软件编译过的,一般编译软件都会有自带的制造转移功能,也就是让生成的程序文件能够转移