自己动手写操作系统 之 连接器

于渊使用虚拟机中的Linux来编译内核,还是那么老的版本。

以前我在机器装了Ubuntu,结果Ubuntu里还没有nasm,要自己下载。

 

我对Linux可是几乎没什么了解,并且,我即便在敲代码的时候也喜欢挂着QQ,聊聊天,

怎舍得离开Windows的呵护。

 

言归正传,书中使用nasm编译出elf格式的文件,但是MinGW却死活弄不出elf文件,

索性就让nasm编译出coff文件以便配合MinGW。

现在的问题是,如何连接它们,用GCC吧,一下子连接出EP文件……

最终的方案是自己写了一个连接器400多行吧,将就着能用了。

可以连接出com文件,还不错。

 

coff资料:

http://baike.baidu.com/view/453125.htm   (百度百科…)

其中只有一个地方没讲清楚,害的我分析了半天:

所有重定位内部变量时,重定位表项索引的符号都是数据段符号,

也就是说,我们只能得到数据段的在数据段中的偏移(真拗口),

其最终的绝对地址还应该加上被重定位处的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值