MCPcopy Create free account
hub / github.com/djhworld/simple-computer / Emit

Method Emit

asm/instructions.go:636–657  ·  view source on GitHub ↗
(labelResolver LabelResolver, symbolResolver SymbolResolver)

Source from the content-addressed store, hash-verified

634}
635
636func (c CALL) Emit(labelResolver LabelResolver, symbolResolver SymbolResolver) ([]uint16, error) {
637 nextInsAddress, err := symbolResolver(SYMBOL{NEXTINSTRUCTION})
638 if err != nil {
639 return nil, err
640 }
641
642 compositeInstructions := []Instruction{
643 DATA{REG3, NUMBER{nextInsAddress}},
644 JMP{c.Routine},
645 }
646
647 emitted := []uint16{}
648 for _, ins := range compositeInstructions {
649 if e, err := ins.Emit(labelResolver, symbolResolver); err == nil {
650 emitted = append(emitted, e...)
651 } else {
652 return nil, err
653 }
654 }
655
656 return emitted, nil
657}
658
659func (c CALL) String() string {
660 return fmt.Sprintf("CALL %s", c.Routine)

Callers

nothing calls this directly

Calls 1

EmitMethod · 0.65

Tested by

no test coverage detected