n.c.c final presentation
DESCRIPTION
N.C.C Final Presentation. ( Ncc is not a C Compiler). 4 조 ( 말년병장 ) 200324293 심민조 200324210 김호철. Index. 1. Development Environment 2. Language Support 3. LEX & YACC Define 4. Symbol Table Management - PowerPoint PPT PresentationTRANSCRIPT
N.C.C Final Presentation(Ncc is not a C Compiler)
4 조 ( 말년병장 )200324293 심민조200324210 김호철
2
Index1. 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
Development EnvironmentDevelopment 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, Win-dows7
Test Environment O.S : Windows XP(SP3), Windows7
3
4
Language SupportLanguage 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 architec-ture
LEX & YACC DefineMake 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
Symbol Table ManagementOne Function has One Symbol table- Function Call , Parameter
Global Variables are not consideredOnly supports Local Variable, Parameter Variable
Data Structure-Vector : Function Table -Vector : Symbol Table
6
Symbol Table Management
7
LiteralTable
Number
Table
FunctionManage Table----------------
FuncTab* List
Source Lexer Parser
Codegenerat
e
MASMassmble
rLinker
FunctionTable
----------------funcname
Symbol ListIntercode
ListnParam
Win32 Binary
8
Intermediate CodeUsing 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
Intermediate Code
9
Target Code(Masm Code)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
Target Code(Total Process) 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
Target Code(Binary Code)
12
MASMAssembler
Linker Win32Binary
Optimization
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 aif_exit:
cmp a,b jge if_exit inc aif_exit:
14
Work Plan
DEMO
1. For Loop2. Function Call & For Loop3. While & Comment4. Recursive - 1 ( Recursive Summation)5. Recursive - 2 ( Recursive Fibonacci Sequence)6. MultiFunction ( Prime Finder, Piramid)7. Error Detection8. Intermediate Code
15
Q & A