LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: rickxbx

ld 的 -e 参数求解

[复制链接]
 楼主| 发表于 2005-4-6 21:22:03 | 显示全部楼层
Post by kj501
我什么时候回避问题了?!!
你看看你的提的第一个问题,先不说清楚问题的背景,一上来就说ld -e不能指定程序的入口地址,我当然要反驳你的意见啦。

呵呵,不用火,不用火
如果仔细看我给的程序就明白了,我用了 --oformat binary ,还有 ndisasm 而不是 objdump,应该差不多能明白了

ps:我说你回避问题,主要是指的后面回帖,而不是一开始的反驳.后来的帖子中,为了消除各位的误解,我就强调了我所讨论的是 raw binary,而不是我们通常意义上的elf可执行文件

ps:讨论问题,增长知识才是最主要的,你说是吗?
回复 支持 反对

使用道具 举报

发表于 2005-4-7 11:34:33 | 显示全部楼层
我总觉得你的想法怪怪的,ld -e需要所入口地址保存在具有格式的可执行文件中,而你又要求生成的文件是没有格式信息的raw binary,没有格式却要保存信息,这不是自相矛盾吗?
我也不认为“对于纯的二进制,ld的e是没什么用的,连接时谁在前面谁就是入口地址“这句话完全正确。前半句正确,后半句从概念上讲不准确。既然是raw binary,那就已经没有包含任何格式信息,同样也不存在什么入口地址。加载程序把raw binary加载后,加载程序愿意从那里开始执行就从那里开始执行,这个主动权完全掌握在加载程序手里。
至于链接时谁放在前面的问题,是由链接时的模块顺序决定的,谁在前面,链接器就把它放在生成的可执行文件的前面,完全和ld -e没有关系。
btw:前面我说的话语气可能重了点,请原谅!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-7 12:59:19 | 显示全部楼层
呵呵,我前面说的普适的意思是:不管ld还有哪些参数,-e总是有效果的.
这里根本就没有了通常意义上的加载程序的概念了,他是被从硬盘硬拷到内存的

ps:看来斑竹linkers&loaders学的不错哈
回复 支持 反对

使用道具 举报

发表于 2005-4-7 21:38:58 | 显示全部楼层
《linkers & loaders》我正在看。感觉确实是一本好书。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表