...
1 package repl
2
3 import (
4 `errors`
5
6 `github.com/chenzhuoyu/iasm/x86_64`
7 )
8
9 type _IASMArchSpecific struct {
10 ps x86_64.Parser
11 }
12
13 func (self *_IASMArchSpecific) doasm(addr uintptr, line string) ([]byte, error) {
14 var err error
15 var asm x86_64.Assembler
16 var ast *x86_64.ParsedLine
17
18
19 if ast, err = self.ps.Feed(line); err != nil {
20 return nil, err
21 }
22
23
24 if ast.Kind == x86_64.LineLabel {
25 return nil, errors.New("interactive shell does not support labels")
26 }
27
28
29 if err = asm.WithBase(addr).Assemble(line); err != nil {
30 return nil, err
31 } else {
32 return asm.Code(), nil
33 }
34 }
35
View as plain text