Skip to content

Instantly share code, notes, and snippets.

@nelhage
Last active August 29, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nelhage/11431738 to your computer and use it in GitHub Desktop.
Save nelhage/11431738 to your computer and use it in GitHub Desktop.
package reader
import "io"
func getRead(r io.Reader) func([]byte) (int, error) {
return r.Read
}
// partial output of `go tool 6g -S read.go`:
//
// --- prog list "getRead" ---
// 0000 (read.go:5) TEXT getRead+0(SB),$16-24
// 0001 (read.go:5) FUNCDATA $0,gcargs·0+0(SB)
// 0002 (read.go:5) FUNCDATA $1,gclocals·0+0(SB)
// 0003 (read.go:5) TYPE r+0(FP){io.Reader},$16
// 0004 (read.go:5) TYPE ~anon1+16(FP){func([]uint8) (int, error)},$8
// 0005 (read.go:6) MOVQ r+0(FP),BX
// 0006 (read.go:6) CMPQ BX,$0
// 0007 (read.go:6) JNE $1,9
// 0008 (read.go:6) MOVL AX,(BX)
// 0009 (read.go:6) MOVQ $type.struct { F uintptr; R io.Reader }+0(SB),(SP)
// 0010 (read.go:6) PCDATA $0,$16
// 0011 (read.go:6) CALL ,runtime.new+0(SB)
// 0012 (read.go:6) PCDATA $0,$-1
// 0013 (read.go:6) MOVQ 8(SP),AX
// 0014 (read.go:6) NOP ,
// 0015 (read.go:6) MOVQ $io.Reader.Read·fm+0(SB),BP
// 0016 (read.go:6) MOVQ BP,(AX)
// 0017 (read.go:6) NOP ,
// 0018 (read.go:6) MOVQ r+0(FP),BP
// 0019 (read.go:6) MOVQ BP,8(AX)
// 0020 (read.go:6) MOVQ r+8(FP),BP
// 0021 (read.go:6) MOVQ BP,16(AX)
// 0022 (read.go:6) MOVQ AX,~anon1+16(FP)
// 0023 (read.go:6) RET ,
//
// --- prog list "io.Reader.Read·fm" ---
// 0024 (read.go:6) TEXT io.Reader.Read·fm+0(SB),2,$56-48
// 0025 (read.go:6) FUNCDATA $0,gcargs·1+0(SB)
// 0026 (read.go:6) FUNCDATA $1,gclocals·1+0(SB)
// 0027 (read.go:6) TYPE a0+0(FP){[]uint8},$24
// 0028 (read.go:6) TYPE r0+24(FP){int},$8
// 0029 (read.go:6) TYPE r1+32(FP){error},$16
// 0030 (read.go:6) MOVQ $0,r1+32(FP)
// 0031 (read.go:6) MOVQ $0,r1+40(FP)
// 0032 (read.go:6) LEAQ 8(DX),BX
// 0033 (read.go:6) MOVQ (BX),CX
// 0034 (read.go:6) MOVQ 8(BX),BP
// 0035 (read.go:6) MOVQ a0+0(FP),BX
// 0036 (read.go:6) MOVQ BX,8(SP)
// 0037 (read.go:6) MOVQ a0+8(FP),BX
// 0038 (read.go:6) MOVQ BX,16(SP)
// 0039 (read.go:6) MOVQ a0+16(FP),BX
// 0040 (read.go:6) MOVQ BX,24(SP)
// 0041 (read.go:6) MOVQ BP,(SP)
// 0042 (read.go:6) NOP ,
// 0043 (read.go:6) MOVQ 32(CX),BX
// 0044 (read.go:6) PCDATA $0,$56
// 0045 (read.go:6) CALL ,BX
// 0046 (read.go:6) PCDATA $0,$-1
// 0047 (read.go:6) MOVQ 32(SP),BX
// 0048 (read.go:6) MOVQ BX,r0+24(FP)
// 0049 (read.go:6) MOVQ 40(SP),BX
// 0050 (read.go:6) MOVQ BX,r1+32(FP)
// 0051 (read.go:6) MOVQ 48(SP),BX
// 0052 (read.go:6) MOVQ BX,r1+40(FP)
// 0053 (read.go:6) RET ,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment