目标文件:计算机科学中存放目标代码的计算机文件,包含着机器代码,代码在运行时使用的数据,调试信息等,是从源代码文件产生程序文件这一过程的中间产物。
目标代码(objectcode)指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。目标文件(objectfile)即存放目标代码的计算机文件,它常被称作二进制文件(binaries)。
目标文件包含着机器代码(可直接被计算机中央处理器执行)以及代码在运行时使用的数据,如重定位信息,如用于链接或调试的程序符号(变量和函数的名字),此外还包括其他调试信息。目标文件是从源代码文件产生程序文件这一过程的中间产物,链接器正是通过把目标文件链接在一起来生成可执行文件或库文件。目标文件中唯一的要素是机器代码,例如,用于嵌入式系统的目标文件可能仅仅含有机器代码。
寻址方式的区别:

  • 近址寻址或远址寻址
  • 绝对寻址或相对寻址
  • 寻址长度为8位、16位、32位或64位
    但是对于32位x86平台下的elf文件的重定位入口所修正的指令寻址方式只有两种:
  • 绝对近址32位寻址
  • 相对近址32位寻址

ABI:application binary interface
API:application programming interface
C为例子决定二进制文件是否兼容:

  • 内置类型(int)的大小和在存储器中的放置方式(大小端、文件对齐)
  • 组合类型(数组、struct、union)的存储方式和内存分布
  • 外部符号与用户定义的符号之间的命名方式和解析方式(func函数在C语言目标文件中是否被解析成外部符号_func)
  • 函数调用方式(参数入栈顺序、返回值如何保持)
  • 堆栈的分布方式(参数和局部变量在堆栈中的位置、参数的传递方法)
  • 寄存器使用约定(函数调用时哪些寄存器可以修改,哪些须要保存)

最新文章

  1. Java中查找文件并且打印输出指定文件下面的子目录
  2. centos6.5编译安装lamp开发环境
  3. SQL标签
  4. 解决保存快照失败后redis无法写入的问题
  5. Linux下运行top命令显示的PR\NI\RES\SHR\S\%MEM TIME+都代表什么
  6. segment fault
  7. NodeJS包管理工具——npm入门
  8. oschina娱乐游戏
  9. mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
  10. MVC各层介绍使用---初步理解
  11. 企业信息化-Excel快速生成系统
  12. 编写高质量的Python代码系列(一)之用Pythonic方式来思考
  13. 2018-2019-2 《网络对抗技术》 Exp1 PC平台逆向破解 20165215
  14. Octopus501工作站环境配置
  15. [硬件]SICK LMS111激光扫描仪使用
  16. 基础SELECT实例
  17. Nginx七层反向代理和负载均衡
  18. [LeetCode] 116&117. Populating Next Right Pointers in Each Node I&II_Medium tag: BFS(Dont know why leetcode tag it as DFS...)
  19. Java SE 基础知识(一)
  20. Java之IO(九)其它字节流

热门文章

  1. MyBatis核心组件
  2. robot framework 如何获取隐藏元素的文本,以及可见元素的文本
  3. Unity 宽度适配 NGUI
  4. 针对IE6 7 8当独写样式
  5. JavaScript--常用对象的属性及方法(2)
  6. [Vuex系列] - Mutation的具体用法
  7. Go 信道Channel
  8. What Linux bind mounts are really doing
  9. Linux学习笔记(七)Linux常用命令:挂载命令
  10. nginx屏蔽版本号