Skip to content

Instantly share code, notes, and snippets.

@agam
Created March 13, 2013 01:09
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 agam/5148575 to your computer and use it in GitHub Desktop.
Save agam/5148575 to your computer and use it in GitHub Desktop.
Assembly output of Hello World in Go
# command-line-arguments
--- prog list "main" ---
0000 TEXT main+0(SB),$72-0
0001 LEAQ autotmp_0002+-16(SP),DI
0002 MOVQ $0,AX
0003 STOSQ ,
0004 STOSQ ,
0005 LEAQ autotmp_0002+-16(SP),BX
0006 MOVL $1,autotmp_0000+-24(SP)
0007 MOVL $1,autotmp_0000+-20(SP)
0008 MOVQ BX,autotmp_0000+-32(SP)
0009 MOVQ $type.string+0(SB),(SP)
0010 LEAQ go.string."Hello, World"+0(SB),SI
0011 LEAQ 8(SP),DI
0012 MOVSQ ,
0013 MOVSQ ,
0014 CALL ,runtime.convT2E+0(SB)
0015 LEAQ 24(SP),SI
0016 LEAQ autotmp_0000+-32(SP),DI
0017 MOVQ (DI),DI
0018 MOVSQ ,
0019 MOVSQ ,
0020 LEAQ (SP),BX
0021 MOVQ autotmp_0000+-32(SP),BP
0022 MOVQ BP,(BX)
0023 MOVL autotmp_0000+-24(SP),BP
0024 MOVL BP,8(BX)
0025 MOVL autotmp_0000+-20(SP),BP
0026 MOVL BP,12(BX)
0027 CALL ,fmt.Println+0(SB)
0028 RET ,
--- prog list "init" ---
0029 TEXT init+0(SB),$0-0
0030 MOVB initdone·+0(SB),AX
0031 MOVB AX,BX
0032 CMPB BX,$0
0033 JEQ ,39
0034 MOVB AX,BX
0035 CMPB BX,$2
0036 JNE ,38
0037 RET ,
0038 CALL ,runtime.throwinit+0(SB)
0039 MOVB $1,initdone·+0(SB)
0040 CALL ,fmt.init+0(SB)
0041 MOVB $2,initdone·+0(SB)
0042 RET ,
--- prog list "<S>" ---
0043 DATA go.string."Hello, World"+0(SB)/8,$go.string."Hello, World"+12(SB)
0043 DATA go.string."Hello, World"+8(SB)/4,$12
0043 DATA go.string."Hello, World"+12(SB)/8,$"Hello, W"
0043 DATA go.string."Hello, World"+20(SB)/4,$"orld"
0043 DATA go.string."Hello, World"+24(SB)/1,$0
0043 GLOBL go.string."Hello, World"+0(SB),10,$32
0043 GLOBL initdone·+0(SB),16,$1(AL*0)
0043 DATA type.func()+0(SB)/8,$weak.type.*reflect.commonType+0(SB)
0043 DATA type.func()+8(SB)/8,$type.func()+16(SB)
0043 DATA type.func()+16(SB)/8,$8
0043 DATA type.func()+24(SB)/4,$4135763190
0043 DATA type.func()+28(SB)/1,$0
0043 DATA type.func()+29(SB)/1,$8
0043 DATA type.func()+30(SB)/1,$8
0043 DATA type.func()+31(SB)/1,$19
0043 DATA type.func()+32(SB)/8,$runtime.algarray+384(SB)
0043 DATA type.func()+40(SB)/8,$go.string."func()"+0(SB)
0043 DATA go.string."func()"+0(SB)/8,$go.string."func()"+12(SB)
0043 DATA go.string."func()"+8(SB)/4,$6
0043 DATA go.string."func()"+12(SB)/6,$"func()"
0043 DATA go.string."func()"+18(SB)/1,$0
0043 GLOBL go.string."func()"+0(SB),10,$24
0043 DATA type.func()+56(SB)/8,$weak.type.*func()+0(SB)
0043 DATA type.func()+64(SB)/1,$0
0043 DATA type.func()+72(SB)/8,$type.func()+104(SB)
0043 DATA type.func()+80(SB)/4,$0
0043 DATA type.func()+84(SB)/4,$0
0043 DATA type.func()+88(SB)/8,$type.func()+104(SB)
0043 DATA type.func()+96(SB)/4,$0
0043 DATA type.func()+100(SB)/4,$0
0043 GLOBL type.func()+0(SB),10,$104
0043 DATA type.interface {}+0(SB)/8,$weak.type.*reflect.commonType+0(SB)
0043 DATA type.interface {}+8(SB)/8,$type.interface {}+16(SB)
0043 DATA type.interface {}+16(SB)/8,$16
0043 DATA type.interface {}+24(SB)/4,$413161447
0043 DATA type.interface {}+28(SB)/1,$0
0043 DATA type.interface {}+29(SB)/1,$8
0043 DATA type.interface {}+30(SB)/1,$8
0043 DATA type.interface {}+31(SB)/1,$20
0043 DATA type.interface {}+32(SB)/8,$runtime.algarray+512(SB)
0043 DATA type.interface {}+40(SB)/8,$go.string."interface {}"+0(SB)
0043 DATA go.string."interface {}"+0(SB)/8,$go.string."interface {}"+12(SB)
0043 DATA go.string."interface {}"+8(SB)/4,$12
0043 DATA go.string."interface {}"+12(SB)/8,$"interfac"
0043 DATA go.string."interface {}"+20(SB)/4,$"e {}"
0043 DATA go.string."interface {}"+24(SB)/1,$0
0043 GLOBL go.string."interface {}"+0(SB),10,$32
0043 DATA type.interface {}+56(SB)/8,$weak.type.*interface {}+0(SB)
0043 DATA type.interface {}+64(SB)/8,$type.interface {}+80(SB)
0043 DATA type.interface {}+72(SB)/4,$0
0043 DATA type.interface {}+76(SB)/4,$0
0043 GLOBL type.interface {}+0(SB),10,$80
0043 DATA type.func(*uint8, string) interface {}+0(SB)/8,$weak.type.*reflect.commonType+0(SB)
0043 DATA type.func(*uint8, string) interface {}+8(SB)/8,$type.func(*uint8, string) interface {}+16(SB)
0043 DATA type.func(*uint8, string) interface {}+16(SB)/8,$8
0043 DATA type.func(*uint8, string) interface {}+24(SB)/4,$4223391618
0043 DATA type.func(*uint8, string) interface {}+28(SB)/1,$0
0043 DATA type.func(*uint8, string) interface {}+29(SB)/1,$8
0043 DATA type.func(*uint8, string) interface {}+30(SB)/1,$8
0043 DATA type.func(*uint8, string) interface {}+31(SB)/1,$19
0043 DATA type.func(*uint8, string) interface {}+32(SB)/8,$runtime.algarray+384(SB)
0043 DATA type.func(*uint8, string) interface {}+40(SB)/8,$go.string."func(*uint8, string) interface {}"+0(SB)
0043 DATA go.string."func(*uint8, string) interface {}"+0(SB)/8,$go.string."func(*uint8, string) interface {}"+12(SB)
0043 DATA go.string."func(*uint8, string) interface {}"+8(SB)/4,$33
0043 DATA go.string."func(*uint8, string) interface {}"+12(SB)/8,$"func(*ui"
0043 DATA go.string."func(*uint8, string) interface {}"+20(SB)/8,$"nt8, str"
0043 DATA go.string."func(*uint8, string) interface {}"+28(SB)/8,$"ing) int"
0043 DATA go.string."func(*uint8, string) interface {}"+36(SB)/8,$"erface {"
0043 DATA go.string."func(*uint8, string) interface {}"+44(SB)/1,$"}"
0043 DATA go.string."func(*uint8, string) interface {}"+45(SB)/1,$0
0043 GLOBL go.string."func(*uint8, string) interface {}"+0(SB),10,$48
0043 DATA type.func(*uint8, string) interface {}+56(SB)/8,$weak.type.*func(*uint8, string) interface {}+0(SB)
0043 DATA type.func(*uint8, string) interface {}+64(SB)/1,$0
0043 DATA type.func(*uint8, string) interface {}+72(SB)/8,$type.func(*uint8, string) interface {}+104(SB)
0043 DATA type.func(*uint8, string) interface {}+80(SB)/4,$2
0043 DATA type.func(*uint8, string) interface {}+84(SB)/4,$2
0043 DATA type.func(*uint8, string) interface {}+88(SB)/8,$type.func(*uint8, string) interface {}+120(SB)
0043 DATA type.func(*uint8, string) interface {}+96(SB)/4,$1
0043 DATA type.func(*uint8, string) interface {}+100(SB)/4,$1
0043 DATA type.func(*uint8, string) interface {}+104(SB)/8,$type.*uint8+0(SB)
0043 DATA type.func(*uint8, string) interface {}+112(SB)/8,$type.string+0(SB)
0043 DATA type.func(*uint8, string) interface {}+120(SB)/8,$type.interface {}+0(SB)
0043 GLOBL type.func(*uint8, string) interface {}+0(SB),10,$128
0043 DATA type.[]interface {}+0(SB)/8,$weak.type.*reflect.commonType+0(SB)
0043 DATA type.[]interface {}+8(SB)/8,$type.[]interface {}+16(SB)
0043 DATA type.[]interface {}+16(SB)/8,$16
0043 DATA type.[]interface {}+24(SB)/4,$803902320
0043 DATA type.[]interface {}+28(SB)/1,$0
0043 DATA type.[]interface {}+29(SB)/1,$8
0043 DATA type.[]interface {}+30(SB)/1,$8
0043 DATA type.[]interface {}+31(SB)/1,$23
0043 DATA type.[]interface {}+32(SB)/8,$runtime.algarray+544(SB)
0043 DATA type.[]interface {}+40(SB)/8,$go.string."[]interface {}"+0(SB)
0043 DATA go.string."[]interface {}"+0(SB)/8,$go.string."[]interface {}"+12(SB)
0043 DATA go.string."[]interface {}"+8(SB)/4,$14
0043 DATA go.string."[]interface {}"+12(SB)/8,$"[]interf"
0043 DATA go.string."[]interface {}"+20(SB)/6,$"ace {}"
0043 DATA go.string."[]interface {}"+26(SB)/1,$0
0043 GLOBL go.string."[]interface {}"+0(SB),10,$32
0043 DATA type.[]interface {}+56(SB)/8,$weak.type.*[]interface {}+0(SB)
0043 DATA type.[]interface {}+64(SB)/8,$type.interface {}+0(SB)
0043 GLOBL type.[]interface {}+0(SB),10,$72
0043 DATA type.func(...interface {}) (int, error)+0(SB)/8,$weak.type.*reflect.commonType+0(SB)
0043 DATA type.func(...interface {}) (int, error)+8(SB)/8,$type.func(...interface {}) (int, error)+16(SB)
0043 DATA type.func(...interface {}) (int, error)+16(SB)/8,$8
0043 DATA type.func(...interface {}) (int, error)+24(SB)/4,$2172230810
0043 DATA type.func(...interface {}) (int, error)+28(SB)/1,$0
0043 DATA type.func(...interface {}) (int, error)+29(SB)/1,$8
0043 DATA type.func(...interface {}) (int, error)+30(SB)/1,$8
0043 DATA type.func(...interface {}) (int, error)+31(SB)/1,$19
0043 DATA type.func(...interface {}) (int, error)+32(SB)/8,$runtime.algarray+384(SB)
0043 DATA type.func(...interface {}) (int, error)+40(SB)/8,$go.string."func(...interface {}) (int, error)"+0(SB)
0043 DATA go.string."func(...interface {}) (int, error)"+0(SB)/8,$go.string."func(...interface {}) (int, error)"+12(SB)
0043 DATA go.string."func(...interface {}) (int, error)"+8(SB)/4,$34
0043 DATA go.string."func(...interface {}) (int, error)"+12(SB)/8,$"func(..."
0043 DATA go.string."func(...interface {}) (int, error)"+20(SB)/8,$"interfac"
0043 DATA go.string."func(...interface {}) (int, error)"+28(SB)/8,$"e {}) (i"
0043 DATA go.string."func(...interface {}) (int, error)"+36(SB)/8,$"nt, erro"
0043 DATA go.string."func(...interface {}) (int, error)"+44(SB)/2,$"r)"
0043 DATA go.string."func(...interface {}) (int, error)"+46(SB)/1,$0
0043 GLOBL go.string."func(...interface {}) (int, error)"+0(SB),10,$48
0043 DATA type.func(...interface {}) (int, error)+56(SB)/8,$weak.type.*func(...interface {}) (int, error)+0(SB)
0043 DATA type.func(...interface {}) (int, error)+64(SB)/1,$1
0043 DATA type.func(...interface {}) (int, error)+72(SB)/8,$type.func(...interface {}) (int, error)+104(SB)
0043 DATA type.func(...interface {}) (int, error)+80(SB)/4,$1
0043 DATA type.func(...interface {}) (int, error)+84(SB)/4,$1
0043 DATA type.func(...interface {}) (int, error)+88(SB)/8,$type.func(...interface {}) (int, error)+112(SB)
0043 DATA type.func(...interface {}) (int, error)+96(SB)/4,$2
0043 DATA type.func(...interface {}) (int, error)+100(SB)/4,$2
0043 DATA type.func(...interface {}) (int, error)+104(SB)/8,$type.[]interface {}+0(SB)
0043 DATA type.func(...interface {}) (int, error)+112(SB)/8,$type.int+0(SB)
0043 DATA type.func(...interface {}) (int, error)+120(SB)/8,$type.error+0(SB)
0043 GLOBL type.func(...interface {}) (int, error)+0(SB),10,$128
0043 DATA go.importpath.runtime.+0(SB)/8,$go.string."runtime"+12(SB)
0043 DATA go.string."runtime"+0(SB)/8,$go.string."runtime"+12(SB)
0043 DATA go.string."runtime"+8(SB)/4,$7
0043 DATA go.string."runtime"+12(SB)/7,$"runtime"
0043 DATA go.string."runtime"+19(SB)/1,$0
0043 GLOBL go.string."runtime"+0(SB),10,$24
0043 DATA go.importpath.runtime.+8(SB)/4,$7
0043 GLOBL go.importpath.runtime.+0(SB),10,$16
0043 DATA go.importpath.fmt.+0(SB)/8,$go.string."fmt"+12(SB)
0043 DATA go.string."fmt"+0(SB)/8,$go.string."fmt"+12(SB)
0043 DATA go.string."fmt"+8(SB)/4,$3
0043 DATA go.string."fmt"+12(SB)/3,$"fmt"
0043 DATA go.string."fmt"+15(SB)/1,$0
0043 GLOBL go.string."fmt"+0(SB),10,$16
0043 DATA go.importpath.fmt.+8(SB)/4,$3
0043 GLOBL go.importpath.fmt.+0(SB),10,$16
0043 END ,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment