首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用go工具编译?

如何使用go工具编译?
EN

Stack Overflow用户
提问于 2019-01-21 08:40:49
回答 1查看 470关注 0票数 0

简单代码递归和尾

代码语言:javascript
复制
package main

import "fmt"

func TailRecursive(number int, product int) int {

    product = product + number

    if number == 1 {

        return product
    }

    return TailRecursive(number-1, product)
}

func main() {

    answer := TailRecursive(5, 0)
    fmt.Printf("Recursive: %d\n", answer)
}

当我尝试工具编译时

代码语言:javascript
复制
go tool compile 6g -S ./g9.go > assembly.asm

我拿着这个

代码语言:javascript
复制
 cat assembly.asm 
6g:0:0: open 6g: no such file or directory

我的核心架构

代码语言:javascript
复制
x86_64 x86_64 x86_64 GNU/Linux

如何使用go工具编译获得适当的程序集输出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 08:44:29

放下6g (现在被称为compile)

代码语言:javascript
复制
go tool compile -S ./g9.go > assembly.asm

输出

代码语言:javascript
复制
"".TailRecursive STEXT size=107 args=0x18 locals=0x20
    0x0000 00000 (g9.go:5)  TEXT    "".TailRecursive(SB), $32-24
    0x0000 00000 (g9.go:5)  MOVQ    (TLS), CX
    0x0009 00009 (g9.go:5)  CMPQ    SP, 16(CX)
    0x000d 00013 (g9.go:5)  JLS 100
    0x000f 00015 (g9.go:5)  SUBQ    $32, SP
    0x0013 00019 (g9.go:5)  MOVQ    BP, 24(SP)
    0x0018 00024 (g9.go:5)  LEAQ    24(SP), BP
    0x001d 00029 (g9.go:5)  FUNCDATA    $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
    0x001d 00029 (g9.go:5)  FUNCDATA    $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
    0x001d 00029 (g9.go:5)  FUNCDATA    $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
    0x001d 00029 (g9.go:7)  PCDATA  $2, $0
    0x001d 00029 (g9.go:7)  PCDATA  $0, $0
    0x001d 00029 (g9.go:7)  MOVQ    "".number+40(SP), AX
    0x0022 00034 (g9.go:7)  MOVQ    "".product+48(SP), CX
    0x0027 00039 (g9.go:7)  ADDQ    AX, CX
    0x002a 00042 (g9.go:9)  CMPQ    AX, $1
    0x002e 00046 (g9.go:9)  JNE 63
    0x0030 00048 (g9.go:11) MOVQ    CX, "".~r2+56(SP)
    0x0035 00053 (g9.go:11) MOVQ    24(SP), BP
    0x003a 00058 (g9.go:11) ADDQ    $32, SP
    0x003e 00062 (g9.go:11) RET
    ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54286085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档