zoukankan      html  css  js  c++  java
  • 编译器简介

    语言处理系统

    高级语言->汇编语言->机器码->硬件
    在这里插入图片描述
    预处理器:将源程序的存放在不同文件中的多个模块聚合起来,并替换宏。
    汇编器:将编译器形成的汇编语言程序输出转换成可重定位的机器码。
    编译器是一个程序,它可以将 高级编程语言编写的程序 翻译成目标语言(如机器语言)编写的程序。
    解释器也是一个程序,但它不是翻译,而是直接根据用户的输入来执行制定的操作。
    java就是编译器和解释器(虚拟机)的结合,实现一次编译,到处运行。Javac 的编译,编译 Java 源码生成“.class”文件里面实际是字节码,而不是可以直接执行的机器码。Java通过字节码和 Java 虚拟机(JVM)这种跨平台的抽象,屏蔽了操作系统和硬件的细节,这也是实现“一次编译,到处执行”的基础。
    链接器:大型程序会分成多部分编译,一个文件中的代码可能指向另一文件中的位置。链接器可以解决外部内存地址的问题。
    加载器:把所有可执行文件放在内存中执行。

    可重定位

    程序内使用的是逻辑地址,在系统加载程序,给出物理地址时,才会把逻辑地址转换为物理地址,这就是可重定位。即将逻辑地址重新定位成物理地址。

    1. 静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故成为静态重定位。
    2. 动态重定位:它不是在程序装入内存时完成的,而是CPU每次访问内存时 由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。动态重定位需要软件和硬件相互配合完成。

    编译器的结构

    在这里插入图片描述

  • 相关阅读:
    Single Number II
    Best Time to Buy and Sell Stock
    Linked List Cycle
    Single Number
    Max Points on a Line
    Strategy
    LRU Cache
    Word Break II
    Text Justification
    Median of Two Sorted Arrays
  • 原文地址:https://www.cnblogs.com/ChengzhiYang/p/12402767.html
Copyright © 2011-2022 走看看