Update the Windows binary.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22604 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich 2013-08-05 17:09:24 +00:00
parent 8d2fe45334
commit acc55c2724
2 changed files with 11 additions and 7 deletions

Binary file not shown.

View File

@ -91,25 +91,29 @@ Basic Internal Operation
- Initial lexical analysis is done be the preprocessor in
MachineIndependent/Preprocessor, and then refined by a GLSL scanner
in MachineIndependent/Scan.cpp. There is currently no use of flex.
in MachineIndependent/Scan.cpp. There is currently no use of flex.
- Code is parsed using bison, with the aid of a symbol table and an AST
intermediate representation. The symbol table is not passed on to
- Code is parsed using bison on MachineIndependent/glslang.y with the
aid of a symbol table and an AST. The symbol table is not passed on to
the back-end; the intermediate representation stands on its own.
The tree is built by the grammar productions, many of which are
offloaded into ParseHelper.cpp, and by Intermediate.cpp.
- The intermediate representation is very high-level, and represented
as an in-memory tree. This serves to lose no information from the
original program, and to have efficient transfer of the result from
parsing to the back-end. In the AST, constants are propogated and
folded, and a very small amount of dead code is eliminated.
folded, and a very small amount of dead code is eliminated.
To aid linking and reflection, the last top-level branch in the AST
lists all global symbols.
To aid linking and reflection, the last top-level branch in the AST
lists all global symbols.
- The primary algorithm of the back-end compiler is to traverse the
tree (high-level intermediate representation), and create an internal
object code representation. There is an example of how to do this
in MachineIndependent/intermOut.cpp.
in MachineIndependent/intermOut.cpp.
- Reduction of the tree to a linear byte-code style low-level intermediate
representation is likely a good way to generate fully optimized code.
- There is currently some dead linker-type code still lying around.