source: proto/pablo/ReadMe.txt @ 2668

Last change on this file since 2668 was 2668, checked in by ksherdy, 6 years ago

Refactored launch configurations. Clean up grammars.

File size: 2.1 KB
Line 
1PabloJ - Pablo language implementation.
2
3(1) Translates arbitrary length 2^k bit field width streams to an equivalent block-at-a-time target language implementation.
4(2) ...
5
6PabloJ Design Differences
7
81. Programmer defined stream function variable declaration. PabloJ does not gather local variables.
9
10PabloJ Implementation Differences
11
122. Split CarryIntro into separate passes:
13(i) Add carry macros to AST.
14
15Pablo 'if' - Note: The PabloJ translation of 'if' differs slightly from Pablo (Python).
16               
17E - Pablo Expression
18S - Pablo Statement     
19               
20Pablo --> C++/IDISA block-at-a-time target language implementation.
21   
22if ( E ) { S* } (else { S'* } )?
23           
24-->
25           
26if (bitblock::any(E | carryQ.any_carry(base,count)) { S* } else { carrrQ.enqueue_dequeue(base, count); }
27           
28Pablo 'while'
29           
30while ( E ) { S* }
31
32-->
33
34if (bitblock::any(E | carryQ.any_carry(base, count))
35{
36  S*
37  while(E)
38  {
39    S*
40  }
41}
42else
43{
44  carryQ.enqueue_dequeue(base, count);
45
46
47Pablo 'body'
48
49-->
50
51  body += carryQ.carryAdjust(base, count);
52       
53Missing Features
54
551. Support for negative constant integers (-1).
56//2. Code indentation.   
57//3. Pablo '1' --> simd::constant<1>(0)
58//4. Add assert compiler.
59//5. Add SIMD register dump.
60//6. carryQ.CarryQ_Adjust
617. Map substitutions.
62
63PabloJ Design Issues
64 
651. Front-end / Back-end decoupling. Support for multiple target languages (C/C++).
66
67   TODO
68   
69   Replace all occurrences of X.getCPPCode() with a generic getCode call
70   that is configurable based on the target back-end. e.g. C macro syntax
71   versus C++ template syntax etc.
72 
73   Done.
74   
752. Logical division of the compiler into phases to promote the decoupling of visitor passes.
76
77   (a) Analysis - Gather information and populate symbol table information.
78   
79   (b) AST modification
80   
81   (c) Target language instruction generation (unparsing).
82
83   Work in progress.
84   
853. AST Visitor naming conventions.
86
87   Term non-AST modifying visitors XVisitor and AST modifying visitors XXFormers.
88   Done.
89     
90   Done.
91
924. Verify function call expressions versus function call statements in C++ unparsing.
93   Review the the current scheme.
94         
95   Pending.     
Note: See TracBrowser for help on using the repository browser.