https://golang.org/doc/asm

$ cat x.go
package main

func main() {
        println(3)
}
$ GOOS=linux GOARCH=amd64 go tool compile -S x.go        # or: go build 
-gcflags -S x.go

--- prog list "main" ---
0000 (x.go:3) TEXT    main+0(SB),$8-0
0001 (x.go:3) FUNCDATA $0,gcargs·0+0(SB)
0002 (x.go:3) FUNCDATA $1,gclocals·0+0(SB)
0003 (x.go:4) MOVQ    $3,(SP)
0004 (x.go:4) PCDATA  $0,$8
0005 (x.go:4) CALL    ,runtime.printint+0(SB)
0006 (x.go:4) PCDATA  $0,$-1
0007 (x.go:4) PCDATA  $0,$0
0008 (x.go:4) CALL    ,runtime.printnl+0(SB)
0009 (x.go:4) PCDATA  $0,$-1
0010 (x.go:5) RET     ,
...


The FUNCDATA and PCDATA directives contain information for use by the 
garbage collector; they are introduced by the compiler.


1) funcdata What is this .0 which is not a dot :)

2) pcdata what does $-1 mean here

3) Is there some more information on funcdata and pcdata? Doesn't have to 
be in detail, because i know its a can of worms, but just enough so I can 
tell what the garbage collector will be doing :)


--


When defining a TEXT, specifying frame size $-4 tells the linker that this 
is a leaf function that does not need to save LR on entry.


4) What is LR?

5) Leaf as in closure function?


-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/34c742e7-a594-4985-adfe-38c20757099c%40googlegroups.com.

Reply via email to