36 lines
610 B
Go
36 lines
610 B
Go
package vm
|
|
|
|
import (
|
|
"encoding/binary"
|
|
)
|
|
const VERSION = 0
|
|
|
|
const (
|
|
BACK = 0
|
|
CATCH = 1
|
|
CROAK = 2
|
|
LOAD = 3
|
|
RELOAD = 4
|
|
MAP = 5
|
|
MOVE = 6
|
|
HALT = 7
|
|
_MAX = 7
|
|
)
|
|
|
|
func NewLine(instructionList []byte, instruction uint16, args []string, post []byte, szPost []uint8) []byte {
|
|
b := []byte{0x00, 0x00}
|
|
binary.BigEndian.PutUint16(b, instruction)
|
|
for _, arg := range args {
|
|
b = append(b, uint8(len(arg)))
|
|
b = append(b, []byte(arg)...)
|
|
}
|
|
if post != nil {
|
|
b = append(b, uint8(len(post)))
|
|
b = append(b, post...)
|
|
}
|
|
if szPost != nil {
|
|
b = append(b, szPost...)
|
|
}
|
|
return append(instructionList, b...)
|
|
}
|