go-vise

Constrained Size Output Virtual Machine
Info | Log | Files | Refs | README | LICENSE

commit b28303433f177811a5b813bd59cd08b1be1f2415
parent 8d7e8de76bed4a06c122ca79269d460b9bb5dc99
Author: lash <dev@holbrook.no>
Date:   Thu, 19 Dec 2024 09:59:16 +0000

Add mprev, mnext

Diffstat:
Mvm/debug.go | 46++++++++++++++++++++++++++--------------------
1 file changed, 26 insertions(+), 20 deletions(-)

diff --git a/vm/debug.go b/vm/debug.go @@ -43,8 +43,8 @@ func (ph *ParseHandler) WithDefaultHandlers() *ParseHandler { ph.InCmp = ph.incmp ph.MOut = ph.mout ph.MSink = ph.msink -// ph.MNext = ph.mnext -// ph.MPrev = ph.mprev + ph.MNext = ph.mnext + ph.MPrev = ph.mprev return ph } @@ -136,6 +136,18 @@ func (ph *ParseHandler) mout(sym string, sel string) error { return nil } +func (ph *ParseHandler) mnext(sym string, sel string) error { + s := OpcodeString[MNEXT] + ph.cur = fmt.Sprintf("%s %s %s\n", s, sym, sel) + return nil +} + +func (ph *ParseHandler) mprev(sym string, sel string) error { + s := OpcodeString[MPREV] + ph.cur = fmt.Sprintf("%s %s %s\n", s, sym, sel) + return nil +} + // ToString verifies all instructions in bytecode and returns an assmebly code instruction for it. func (ph *ParseHandler) ToString(b []byte) (string, error) { buf := bytes.NewBuffer(nil) @@ -228,24 +240,18 @@ func (ph *ParseHandler) ParseAll(b []byte) (int, error) { if err == nil { err = ph.MOut(r, v) } -// case MNEXT: -// r, v, bb, err := ParseMNext(b) -// b = bb -// if err == nil { -// if w != nil { -// //rs = fmt.Sprintf("%s %s \"%s\"\n", s, r, v) -// rs = fmt.Sprintf("%s %s %s\n", s, r, v) -// } -// } -// case MPREV: -// r, v, bb, err := ParseMPrev(b) -// b = bb -// if err == nil { -// if w != nil { -// //rs = fmt.Sprintf("%s %s \"%s\"\n", s, r, v) -// rs = fmt.Sprintf("%s %s %s\n", s, r, v) -// } -// } + case MNEXT: + r, v, bb, err := ParseMNext(b) + b = bb + if err == nil { + err = ph.MNext(r, v) + } + case MPREV: + r, v, bb, err := ParseMPrev(b) + b = bb + if err == nil { + err = ph.MPrev(r, v) + } } if err != nil { return ph.Length(), err