github.com/arieschain/arieschain@v0.0.0-20191023063405-37c074544356/cmd/evm/disasm.go (about)

     1  
     2  package main
     3  
     4  import (
     5  	"errors"
     6  	"fmt"
     7  	"io/ioutil"
     8  	"strings"
     9  
    10  	"github.com/quickchainproject/quickchain/core/asm"
    11  	cli "gopkg.in/urfave/cli.v1"
    12  )
    13  
    14  var disasmCommand = cli.Command{
    15  	Action:    disasmCmd,
    16  	Name:      "disasm",
    17  	Usage:     "disassembles evm binary",
    18  	ArgsUsage: "<file>",
    19  }
    20  
    21  func disasmCmd(ctx *cli.Context) error {
    22  	if len(ctx.Args().First()) == 0 {
    23  		return errors.New("filename required")
    24  	}
    25  
    26  	fn := ctx.Args().First()
    27  	in, err := ioutil.ReadFile(fn)
    28  	if err != nil {
    29  		return err
    30  	}
    31  
    32  	code := strings.TrimSpace(string(in[:]))
    33  	fmt.Printf("%v\n", code)
    34  	return asm.PrintDisassembled(code)
    35  }