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

wuzhiwenk3001 2012-04-24 11:36:59
一直有个疑惑:windows下的pe文件和linux下的elf格式,他们的代码区里面的机器码都是一样的吗(除了一些地址什么的)?
都是IA32下的机器码吗?我记得好像两个操作系统下的空指令NOP就是OX90的,所以我认为同一个C程序,用VC产生的EXE文件,与用GCC产生的a.out,代码区里的机器码都是一样的,我这样理解对吗??
还是是不是基本都是IA32下的机器码??
...全文
537 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhc289515966 2012-04-25
  • 打赏
  • 举报
回复
不一样、、、你看一下他们调用函数时堆栈的处理就知道是有细微差别的。。
当然,在同样的硬件上,同样的汇编语句对应的机器码是相同的。。。比如mov $2,%eax与mov eax,2生成的机器码是相同的。、。
好像也跟编译器有关
wuzhiwenk3001 2012-04-25
  • 打赏
  • 举报
回复
我想我理解了
www_adintr_com 2012-04-24
  • 打赏
  • 举报
回复
看你把啥子作为相同的标准了.
它们使用的指令集是相同的. 系统调用方式是不同的, 不同的编译器生成的代码也是不同的.
evencoming 2012-04-24
  • 打赏
  • 举报
回复
pe,elf那是可执行文件格式.
而不是机器指令格式

evencoming 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:
pe,elf那是可执行文件格式.
而不是机器指令格式

那个我当然清楚,PE,ELF里的.text段里的不正是机器码吗?当然PE和ELF文件组成当然不同拉,但里面的.text段是一样的吧,我想问的就是这个问题
[/Quote]
如果是
非常非常非常简单的代码,同一个编译器版本的话,同样的体系结构cpu等,可能一样.
wuzhiwenk3001 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
看你把啥子作为相同的标准了.
它们使用的指令集是相同的. 系统调用方式是不同的, 不同的编译器生成的代码也是不同的.
[/Quote]

那最后他们生成的机器码那部分是相同的吗??
wuzhiwenk3001 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
pe,elf那是可执行文件格式.
而不是机器指令格式
[/Quote]
那个我当然清楚,PE,ELF里的.text段里的不正是机器码吗?当然PE和ELF文件组成当然不同拉,但里面的.text段是一样的吧,我想问的就是这个问题

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧