#go #trim #compile #assembly #tool

app trim-go-asm

从 $ go tool compile -S 中去除 Go 汇编

3 个版本

0.1.3 2022年2月25日
0.1.1 2022年2月25日
0.1.0 2021年10月30日

#15#trim

MIT 许可证

15KB
405

包含 (库文件, 3KB) x.o

trim-go-asm

$ go tool compile -S 中去除 Go 汇编

安装

$cargo install trim-go-asm

使用方法

版本 0.1 只能从 stdin 解析输入。因此,$ go tool compile -S x.go > trim-go-asm 是最可能的用法。

贡献

欢迎任何贡献!

待办事项

  • 通过选项读取文件。
  • 通过选项接受 *.go,然后运行 go tool compile -S <filename>.go | trim-go-asm > <filename>.s
  • 通过 -o 指定输出路径
  • 仅为我 添加子命令 for-me
USAGE:
    trim-go-asm [OPTIONS]

OPTIONS:
        --fm         todo!
    -h, --help       Print help information
        --ra         Replace `ABIInternal` to 4(NOSPLIT)
        --rpf        Remove PCDATA and FUNCDATA insts, if you want to enable this option, you must
                     enable --tg too.
        --tg         Trim Goroutine prologue / epilogue
                     // Trim these instructions.
                     MOVQ       (TLS), CX
                     CMPQ       SP, 16(CX)
                     PCDATA     $0, $-2
                     JLS        70
                     PCDATA     $0, $-1
                     // ...
                     NOP
                     PCDATA     $1, $-1
                     PCDATA     $0, $-2
                     CALL       runtime.morestack_noctxt(SB)
                     PCDATA     $0, $-1
                     JMP        0
    -V, --version    Print version information

依赖项

~1.5MB
~24K SLoC