VS这类编译器是把cpp代码转化成啥东西

可执行程序是一个二进制文件,在windows上主要是PE格式,在*nix上是ELF格式。不过也大同小异。里面内容主要有两部分1. 程序运行时使用的代码和数据,代码部分是机器码形式存放,严格来说不能算是汇编2. 用来指导操作系统加载程序的说明数据也可能附加一些诸如调试信息之类给别的程序用的数据忽略不计程序运行时,需要操作系统首先将你的程序加载到内存里,放置在合适的位置,并且设置一些相应的信息(比如加载dll填一下导入表之类),然后再把eip或rip指向你程序的入口代码运行跨系统不能使用的第一个问题是两个系统使用的文件格式不同,所以另一个操作系统认不了。当然这是个小意思,只要有合适的loader能帮你把程序正确的加载和初始化即可,关键是你程序使用的API....... 每个系统下可以调用的api是不一样的所以你需要各式各样的兼容层来完成在一个系统下运行另一个系统的程序这样的壮举
■网友
推荐看《深入理解计算机系统》的链接一章,然后你的疑惑就会变得有深度了


    推荐阅读