mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-12-24 20:32:39 +00:00
Asm Fragment UML
This commit is contained in:
parent
69c76fdcb7
commit
81f50c731a
67
src/main/doc/asm-fragments.puml
Normal file
67
src/main/doc/asm-fragments.puml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
@startuml
|
||||||
|
!theme sketchy-outline
|
||||||
|
|
||||||
|
MasterSynthesizer : getSynthesizer(TargetCpu) : Synthesizer
|
||||||
|
MasterSynthesizer ... Synthesizer : "produces"
|
||||||
|
|
||||||
|
Synthesizer -- "1" TargetCpu
|
||||||
|
Synthesizer -- "1" TemplateCache
|
||||||
|
Synthesizer -- "*" Synthesis : "uses"
|
||||||
|
Synthesizer : getFragmentInstance(InstanceSpec) : Instance
|
||||||
|
Synthesizer : Map<Signature, Synthesis> graph
|
||||||
|
Synthesizer ... Instance : "produces"
|
||||||
|
Synthesizer ... InstanceSpec : "consumes"
|
||||||
|
|
||||||
|
Synthesis -- "1" Signature
|
||||||
|
Synthesis -- "*" SynthesisResult
|
||||||
|
Synthesis -- "*" SynthesisOption
|
||||||
|
|
||||||
|
SynthesisOption -- "1" Signature
|
||||||
|
SynthesisOption -- "*" Signature : "subs"
|
||||||
|
SynthesisOption -- "1" SynthesisRule
|
||||||
|
|
||||||
|
interface SynthesisRule
|
||||||
|
SynthesisRule : matches(AsmFragmentSignature): boolean
|
||||||
|
SynthesisRule : synthesize(AsmFragmentSignature, List<Template>): Template
|
||||||
|
|
||||||
|
SynthesisResult -- "1" Template
|
||||||
|
SynthesisResult -- "1" SynthesisRule
|
||||||
|
SynthesisResult -- "*" SynthesisResult : "subs"
|
||||||
|
|
||||||
|
TemplateCache -- "1" TargetCpu
|
||||||
|
TemplateCache -- "*" Template
|
||||||
|
TemplateCache -- "*" Signature
|
||||||
|
TemplateCache : Map<Signature, Template> cache
|
||||||
|
|
||||||
|
InstanceSpec -- "1" Signature
|
||||||
|
InstanceSpec -- "1" Bindings
|
||||||
|
InstanceSpec : hasNextVariation()
|
||||||
|
InstanceSpec : nextVariation()
|
||||||
|
|
||||||
|
Instance -- "1" Signature
|
||||||
|
Instance -- "1" Template
|
||||||
|
Instance -- "1" Bindings
|
||||||
|
Instance : generate(AsmProg)
|
||||||
|
|
||||||
|
Bindings : Map<String, Value> variables
|
||||||
|
|
||||||
|
Template -- "1" TargetCpu
|
||||||
|
Template -- "1" Signature
|
||||||
|
Template : body
|
||||||
|
Template : clobber
|
||||||
|
Template : cycles
|
||||||
|
|
||||||
|
interface Signature
|
||||||
|
Signature <|-- Assignment
|
||||||
|
Signature <|-- Call
|
||||||
|
Signature <|-- CondJump
|
||||||
|
Signature <|-- ExprSideEffect
|
||||||
|
|
||||||
|
Assignment -- "2" SignatureExpr
|
||||||
|
Call -- SignatureExpr
|
||||||
|
CondJump -- "2" SignatureExpr
|
||||||
|
ExprSideEffect -- SignatureExpr
|
||||||
|
|
||||||
|
interface SignatureExpr
|
||||||
|
|
||||||
|
@enduml
|
Loading…
Reference in New Issue
Block a user