010 introduction

Upload: -

Post on 31-Oct-2015

20 views

Category:

Documents


0 download

DESCRIPTION

metagl

TRANSCRIPT

  • . 2011-2012

  • 3 ( )

    70% . 4-5 . Java. .

    , 14-16 .

    2/22

  • Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman.Compilers: Principles, Techniques, and Tools. 2nd edition.Addison-Wesley, 2007. http://dragonbook.stanford.edu/ ., .. , . , . . : . 2004.http://delab.csd.auth.gr/~katsaros/CompilersBook.htm

    3/22

  • Andrew W. Appel, Modern Compiler Implementation in Java. CambridgeUniversity Press, 1998.http://www.cs.princeton.edu/~appel/modernAndrew W. Appel, Modern Compiler Implementation in C. CambridgeUniversity Press, 1998.http://www.cs.princeton.edu/~appel/modernSteven S. Muchnick, Compiler Design and Implementation, MorganKaufmann Publishers, 1997.Allen I. Hollub, Compiler Design in C, Prentice Hall, 1990.

    4/22

  • .

    sourceprogram compiler

    targetprogram

    errormessages

    .

    5/22

  • C/C++JavaPythonRubyScala: : :

    -

    .

    6/22

  • 1950 . Fortran 18 - .

    .

    , .

    7/22

  • binary translation: hardware synthesis: , . VHDL (Very high-speed integrated circuitHardware Description Language)Databases: Structured Query Language (SQL)

    8/22

  • -

    1 .

    2 .

    9/22

  • , .

    lexical analyzer

    source program

    target program

    syntax analyzer

    semantic analyzer

    intermediate codegenerator

    code optimizer

    code generator

    error handlersymbol-tablemanager

    10/22

  • 3 .

    lexical analyzer

    source program

    target program

    syntax analyzer

    semantic analyzer

    intermediate codegenerator

    code optimizer

    code generator

    error handlersymbol-tablemanager

    10/22

  • 3 .

    lexical analyzer

    source program

    target program

    syntax analyzer

    semantic analyzer

    intermediate codegenerator

    code optimizer

    code generator

    error handlersymbol-tablemanager

    10/22

  • , (identifiers) , ...

    lexical analyzer

    source program

    target program

    syntax analyzer

    semantic analyzer

    intermediate codegenerator

    code optimizer

    code generator

    error handlersymbol-tablemanager

    10/22

  • .

    lexical analyzer

    source program

    target program

    syntax analyzer

    semantic analyzer

    intermediate codegenerator

    code optimizer

    code generator

    error handlersymbol-tablemanager

    10/22

  • position := initial + rate * 60

    lexical analyzer

    id1 := id2 + id3 * 60

    11/22

  • syntax analyzer

    id1 := id2 + id3 * 60

    id1

    :=

    +

    id2 *

    id3 60

    11/22

  • semantic analyzer

    id1

    :=

    +

    id2 *

    id3

    60

    id1

    :=

    +

    id2 *

    id3 60

    inttoreal

    11/22

  • intermediate code generator

    id1

    :=

    +

    id2 *

    id3

    60

    inttoreal

    temp1 := inttoreal(60)temp2 := id3 * temp1temp3 := id2 + temp2id1 := temp3

    11/22

  • code optimizer

    temp1 := inttoreal(60)temp2 := id3 * temp1temp3 := id2 + temp2id1 := temp3

    temp1 := id3 * 60.0id1 := id2 + temp1

    11/22

  • code generator

    temp1 := id3 * 60.0id1 := id2 + temp1

    MOVF id3, R2MULF #60.0, R2MOVF id2, R1ADDF R2, R1MOVF R1, id1

    11/22

  • , , .

    . (preprocessor)

    12/22

  • library,relocatableobject files

    loader/link-editor

    assembler

    relocatable machine code

    compiler

    target assembly program

    preprocessor

    source program

    skeletal source program

    absolute machine code

    13/22

  • .

    :1 Macro processing. .

    2 File inclusion. .

    preprocessor. C++ templates preprocessor.

    14/22

  • Assembler

    assembly assembler .

    (relocatable) (loader/link-editor).

    15/22

  • Assembly Code

    assembly ( opcodes) .

    .MOV a , R1ADD #2 , R1MOV R1 , b

    b = a + 2;

    16/22

  • Two-Pass Assembly

    assembler .

    1 .

    2 .

    .

    L .

    17/22

  • Assembly

    :http://www.faqs.org/docs/Linux-HOWTO/Assembly-HOWTO.htmlhttp://asm.sourceforge.net/http://sources.redhat.com/binutils/http://www.nasm.us/

    18/22

  • Loader/Linker

    .

    .

    19/22

  • Front-end & Back-end , .

    back-end.

    20/22

  • . .

    , .

    21/22

  • .

    .

    22/22