免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3438 | 回复: 6
打印 上一主题 下一主题

求助:可执行文件的代码段存储的指令格式是怎么样的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-22 10:42 |只看该作者 |倒序浏览
我曾经以为:
GCC在翻译C源文件的时候会针对当前CPU生成指令,比如在AMD平台上,会生成AMD的指令

后来, 我发现我错了, 因为我们单位两台电脑的CPU是不同的,操作系统都是linux AS4, 在两台电脑上分别编译的可执行文件可以在另外一台电脑上执行

因此,  我觉得可执行文件的.text段存储的不是纯机器指令, 而是经过处理的机器指令, 工作在操作系统上的加载器会根据当前CPU类型正确加载.text段

但是, 疑问来了
1.如果我的假设成立, 那么GCC会生成很多不同平台上的指令, 这个似乎不通啊, .text段会很大?
2.ELF头部的标识CPU类型的标志, 只能是一种啊, 那么在AMD上生成的可执行文件, 如何在INTEL上执行呢?

论坛徽章:
0
2 [报告]
发表于 2011-02-22 11:18 |只看该作者
amd和intel两个指令不一样?好像差不多吧

论坛徽章:
0
3 [报告]
发表于 2011-02-22 13:21 |只看该作者
差不多也总有差别吧, 只是不明白在AMD平台上编译得到的指令怎么就可以在INTEL平台上运行呢?

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
4 [报告]
发表于 2011-02-22 13:30 |只看该作者
说明这个程序所使用的指令集,这两台电脑的cpu都支持。

论坛徽章:
0
5 [报告]
发表于 2011-02-23 03:00 |只看该作者
就是纯机器指令。

AMD, INTEL 大部分代码是互相兼容的。有小部分不一样

论坛徽章:
0
6 [报告]
发表于 2011-02-24 10:01 |只看该作者
可能是测试机器的CPU:AMD和INTEL不能说明问题, 我再多找几个机器试验下

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2011-02-26 10:12 |只看该作者
差不多也总有差别吧, 只是不明白在AMD平台上编译得到的指令怎么就可以在INTEL平台上运行呢?
faku 发表于 2011-02-22 13:21

所谓交叉编译啊,没什么好奇怪的吧。编译的过程是个语言翻译的过程,在哪个平台上都可实现啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP