zoukankan      html  css  js  c++  java
  • 语言的编译-汇编-链接

    通过高级语言书写的程序,计算机是无法运行的。需经过编译-汇编-链接步骤,翻译成机器语言,这样才能运行在计算机上。

    编译

    根据程序的预处理命令,完成简单的预编译处理。检查程序是否符合语言约束,是否有编写、逻辑错误。

    然后将其翻译成中间代码,其中会有部分汇编代码,对于变量以及函数调用,使用变量名占位。

    汇编

    根据上一步的中间代码文件,将其翻译为机器代码。

    对文件中的变量地址、函数地址、大小,进行了记录,包括符号表(此模块包含哪些符号,符号在文件中的位置,符号在程序中的真正地址(根据text段可以计算出来,初始时为0,连接时替换))、重定位符号表(使用的外部文件的符号,及其在文件中的偏移位置),但是程序中使用的变量以及函数调用,保持占位。

    生成目标文件。此时同正真的可执行文件很相似了,但由于程序中调用的变量以及函数的地址为空白,并且文件的ELF类型标志位不可执行的。

    连接

    多个目标文件合并,生成所有符号在程序中的正真地址,按照重定位表,替换相应位置的操作数,生成最终的可执行文件。

    对于动态链接的方式,会在程序运行时,在将偏移位置的操作数替换掉。

  • 相关阅读:
    IOS 动画的各种实现方法
    多视图控制器--自动布局 3.5 4.0英寸的应用程序
    IOS 多线程编程之Grand Central Dispatch(GCD)介绍和使用 多线程基础和练习
    TableView--通讯录--开篇
    UI 网络程序
    XML JSON解析--基本功能
    通讯录CoreData数据库实现版
    CoreData的使用入门到精通
    sqlite 数据类型详解
    189. Rotate Array
  • 原文地址:https://www.cnblogs.com/mahuan2/p/4797415.html
Copyright © 2011-2022 走看看