1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-25 11:32:07 +00:00

Asm Fragment UML

This commit is contained in:
jespergravgaard 2022-03-20 12:25:36 +01:00
parent 69c76fdcb7
commit 81f50c731a

View 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