deep

a Cross Development Platform for Java

User Tools

Site Tools


dev:crosscompiler:ssa

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
dev:crosscompiler:ssa [2014/07/01 16:02]
127.0.0.1 external edit
dev:crosscompiler:ssa [2016/02/25 13:33] (current)
Line 1: Line 1:
 ====== Static Single Assignment Form ====== ====== Static Single Assignment Form ======
 The Static Single Assignment Form (SSA) is an intermediate form which allows various optimizations and facilitates register allocation. The main point of the SSA is that each variable is assigned a value only once. Each new assignment leads to a new instance of this variable (indicated by i<​sub>​1</​sub>​ and i<​sub>​2</​sub>​). The Static Single Assignment Form (SSA) is an intermediate form which allows various optimizations and facilitates register allocation. The main point of the SSA is that each variable is assigned a value only once. Each new assignment leads to a new instance of this variable (indicated by i<​sub>​1</​sub>​ and i<​sub>​2</​sub>​).
-When optimizing, subsequent instuctions can simply use the definition and the value of these variables (e.g. for constant folding). The register allocation can be made more efficient as the living ranges of the instances are generally very short. More information about the creation and usage of the SSA can be found in [[literatur:​moessenboeck|H. Mössenböck]].+When optimizing, subsequent instuctions can simply use the definition and the value of these variables (e.g. for constant folding). The register allocation can be made more efficient as the living ranges of the instances are generally very short. More information about the creation and usage of the SSA can be found in [[http://​wiki.ntb.ch/​infoportal/​literatur/​moessenboeck|Hanspeter ​Mössenböck]].
  
 The SSA is stored into nodes similar to the CFG nodes. For this purpose we define SSANode as an extension of CFGNode. The SSA is stored into nodes similar to the CFG nodes. For this purpose we define SSANode as an extension of CFGNode.
 [{{ .:​ssanode.png?​150&​direct | //Structure of an SSANode//​}}] [{{ .:​ssanode.png?​150&​direct | //Structure of an SSANode//​}}]
 When generating the CFG we already create instances of type SSANode. When generating the CFG we already create instances of type SSANode.
- 
 ===== SSA Instructions ===== ===== SSA Instructions =====
 All Bytecode instructions of all nodes are translated into SSA instructions. The SSA instructions can be categorized as follows: All Bytecode instructions of all nodes are translated into SSA instructions. The SSA instructions can be categorized as follows:
dev/crosscompiler/ssa.txt · Last modified: 2016/02/25 13:33 (external edit)