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