摘要: 链结器使用BFD库访问obj和achive文件. 这些库允许链结器使用同样的例程操作不同的obj文件格式. 不同的obj文件格式, 可以通过简单的建立一个BFD备份端并添加到库中即可支持. 为了保存运行时内存, 链结器和相关工具通常只支持子集. objdump -i列出配置支... 阅读全文
posted @ 2010-06-10 18:52 liyonghelpme 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 每个链接都被一个链接脚本控制。 这个脚本是用连接命令语言书写的。链接脚本的主要目的是描述输入文件中的域应该如何映射到输出文件中, 并且控制输出文件的内存布局。 大多数链接脚本除此之外什么也不做。 然而, 当有必要时,链接脚本也可以指导链接器去产生其他更多的操作, 使用下面的命... 阅读全文
posted @ 2010-06-10 18:24 liyonghelpme 阅读(287) 评论(0) 推荐(0) 编辑
摘要: execuable and linking format头文件定义了可执行二进制文件格式.在这些文件是正常执行文件, 重定向目标文件, 内核文件, 和共享库.一个可执行文件使用elf格式,包括elf头, 接着是程序头表, 或者区域头表, 或者两者都有. elf头总是偏移为0.... 阅读全文
posted @ 2010-06-10 15:35 liyonghelpme 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 转换:诊断是如何定义的.每个非空空白符序列除了换行符之外, 是保持, 还是被空格替换.环境:物理源文件多字符和原字符集间的映射.标识符:宽字符可以作为标识符, 对应的通用字符名称. 作者:liyonghelpme 发表于... 阅读全文
posted @ 2010-06-10 13:52 liyonghelpme 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 运行时惯例集合在所有处理处理二进制表示的工具之后, 包含编译器, 汇编器, 连接器, 以及语言运行时支持. 一些ABI通过书写特征, 可能的多个兴趣部分的设计, 来规范. 其他简化一组特定工具的实际使用. ABI 一致性:一个编译器对某个ABI一致, 如果他产生的代码满足所有... 阅读全文
posted @ 2010-06-10 13:44 liyonghelpme 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 你可以定义局部寄存器变量:register int *foo asm("a5");寄存器名称是cpu相关的, 但这不是个问题, 因为特定的寄存器在显式的汇编指令中是最常用的. 这些需要你条件化你的程序代码, 一边适应cpu类型. ... 阅读全文
posted @ 2010-06-10 13:14 liyonghelpme 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 你可以定义全局寄存器变量在gnuc中:register int *foo asm("a5");这里a5是被使用的寄存器名字. 选择一个寄存器可以在函数调用中被正常的存取在你机器上, 这样库例程就不会冲刷它.寄存器名字是跟cpu有关的, 所以你可能需要为你的程序条件化cpu类型... 阅读全文
posted @ 2010-06-10 13:07 liyonghelpme 阅读(377) 评论(0) 推荐(0) 编辑