Presentation is loading. Please wait.

Presentation is loading. Please wait.

(Ncc is not a C Compiler) 4 조 ( 말년병장 ) 200324293 심민조 200324210 김호철.

Similar presentations


Presentation on theme: "(Ncc is not a C Compiler) 4 조 ( 말년병장 ) 200324293 심민조 200324210 김호철."— Presentation transcript:

1 (Ncc is not a C Compiler) 4 조 ( 말년병장 ) 200324293 심민조 200324210 김호철

2 1. Development Environment 2. Language Support 3. LEX & YACC Define 4. Symbol Table Management 5. Intermediate Code 6. Target Code 7. Optimization 8. Work Plan 9. Demo 10. Q&A 2

3 Development Environment Language : C, C++ Compiler : gcc, g++ Lexer : FLEX v2.5.4 Yacc : BISON v1.25 Assembler : MASM v6.15 Linker : Microsoft Incremental Linker 6.00.8447 O.S : Linux(ubuntu), Windows XP, Windows7 Test Environment O.S : Windows XP(SP3), Windows7 3

4 Language Support Language Supports Function Call, Argument Passing Return Value, Printf, IF condition For loop, While loop, break, Increment OP, Decrement OP, +,-,/,*,mod Recursive Function Call Nested For, While, IF, Integer Variable Void type, Single/Multiple Comment Difference ! Small,Easy,Real Binary Ncc supports WIN32 PE binary, asm architecture 4

5 Make our Own Small C Language ! - Mini C < NCC < ANSI C Difference ! Small & Easy Special Feature - Printf can be used in grammer ! ( Not a function ) - Genereate 3 Address Intermmediate Code Error Handling - Sementic Error ( Type Check, Function, Variable ) - Syntax( {, }, ; ) 5

6 One Function has One Symbol table - Function Call, Parameter Global Variables are not considered Only supports Local Variable, Parameter Variable Data Structure - Vector : Function Table - Vector : Symbol Table 6

7 7 Literal Table Number Table Function Manage Table ---------------- FuncTab* List SourceLexerParser Code generate MASM assmbler Linker Function Table ---------------- funcname Symbol List Intercode List nParam Win32 Binary

8 Using Triple Address Condition Jump use Compare op like assembly Optimization ? Constant Number Allocate Optimize IF Statement Optimize What is difference with assembly code? Stack Frame Management Register Management Abstraction Level 8

9 9

10 Printf Library ( not a stdlib ) Available to use Crtlib ( vc ) int main(){ int I,j,k; for(i=2; i<10; i++) { for(j=1; j<10;j++) { k=i*j; printf(“%d*%d=%d\t”,I,j,k); } printf(“\n”); } 10

11 int main(){ int I,j,k; for(i=2; i<10; i++) { for(j=1; j<10;j++) { k=i*j; printf(“%d*%d=%d\t”,I,j,k); } printf(“\n”); } 11

12 12 MASM Assembler Linker Win32 Binary

13 13 1. Constant Number Assign a = 3*2+1*2  a=8 2. If condition Code Optimize if( a < b) { a++; }  cmp a,b jl if_inner_stmt jge if_exit inner_stmt : inc a if_exit: cmp a,b jge if_exit inc a if_exit:

14 14

15 1. For Loop 2. Function Call & For Loop 3. While & Comment 4. Recursive - 1 ( Recursive Summation) 5. Recursive - 2 ( Recursive Fibonacci Sequence) 6. MultiFunction ( Prime Finder, Piramid) 7. Error Detection 8. Intermediate Code 15

16 Q & A


Download ppt "(Ncc is not a C Compiler) 4 조 ( 말년병장 ) 200324293 심민조 200324210 김호철."

Similar presentations


Ads by Google