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