Linux和windows下程序产生的机器码是相同的吗?解决办法

Linux和windows下程序产生的机器码是相同的吗??
一直有个疑惑:windows下的pe文件和linux下的elf格式,他们的代码区里面的机器码都是一样的吗(除了一些地址什么的)?
  都是IA32下的机器码吗?我记得好像两个操作系统下的空指令NOP就是OX90的,所以我认为同一个C程序,用VC产生的EXE文件,与用GCC产生的a.out,代码区里的机器码都是一样的,我这样理解对吗??
  还是是不是基本都是IA32下的机器码??

------解决方案--------------------
pe,elf那是可执行文件格式.
而不是机器指令格式


------解决方案--------------------
看你把啥子作为相同的标准了.
它们使用的指令集是相同的. 系统调用方式是不同的, 不同的编译器生成的代码也是不同的.
------解决方案--------------------
探讨
引用:
pe,elf那是可执行文件格式.
而不是机器指令格式

那个我当然清楚,PE,ELF里的.text段里的不正是机器码吗?当然PE和ELF文件组成当然不同拉,但里面的.text段是一样的吧,我想问的就是这个问题

------解决方案--------------------
不一样、、、你看一下他们调用函数时堆栈的处理就知道是有细微差别的。。
当然,在同样的硬件上,同样的汇编语句对应的机器码是相同的。。。比如mov $2,%eax与mov eax,2生成的机器码是相同的。、。
好像也跟编译器有关