forked from ShivamSarodia/ShivyC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
feature_tracking.txt
97 lines (79 loc) · 2.43 KB
/
feature_tracking.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
This is a VERY rough txt file I'm using to keep track of direction of the
project.
LEGEND
------
Immediate timeline - Changes planned as the next steps.
Main projects - The large-scale changes planned for forseeable future.
Features - Various smaller-scale changes that need to be implemented
Current target: fully compile nmake.c from CS323 pset
* - Explicitly required to reach current target
--------------------------------------------------------------------------------
IMMEDIATE TIMELINE
------------------
- const
- typedef
- initializers (global, array/struct, string)
- #define
- functions (definition, struct as argument/return value, argc/argv)
- sizeof
- hex sequences in strings
--------------------------------------------------------------------------------
MAIN PROJECTS
-------------
--------------------------------------------------------------------------------
FEATURES
--------
TYPES
- Declaration initializers
* - Global initializers
* - Array/struct initializers
* - String initializers
- Full extern/static/global variable implementation
- static globals, static locals, etc
- Qualified types
* - const
- volatile
- register
* - Update headers to include these
- Similar types
- `long long` (distinct from `long`)
- Proper ranking of integers, distinct from just size
- Implement `double` and `float`
* - Implement typedef
PREPROCESSOR
- Fix small bugs in current implementation
* - #define
* - static and function-form
CONTROL STATEMENTS
- do-while
- switch
FUNCTIONS
* - Implement function definition
* - Improve function declaration
* - Struct as argument
* - Struct as return value
- Over 6 arguments
* - Support argc and argv
EXPRESSION
- Bitwise (&, |, etc.)
- Ternary
* - sizeof
- Casts
- Hex/octal literal consts
- Literal suffixed consts (`123ul`, etc)
* - Hex sequences in strings (`\0`)
OPTIMIZAIONS
- Remove unnecessary lea before function calls
- General dataflow analysis
- Conditionals in if-statements
- Simplify output code for chained [] or . or ->
- Simplify repeated Set IL commands
- Live range splitting in register allocator
- Speed up register allocator
GENERAL
- Support error recovery
- Within parser
- Between stages
(i.e. if lexer/parser are confident in their guess, try IL generation too)
- Improved treatment of command line flags
--------------------------------------------------------------------------------