Skip to content

Instantly share code, notes, and snippets.

@mpenick
Created May 12, 2015 00:40
Show Gist options
  • Select an option

  • Save mpenick/f5be178314447c69c35e to your computer and use it in GitHub Desktop.

Select an option

Save mpenick/f5be178314447c69c35e to your computer and use it in GitHub Desktop.
; Generated with: gcc-4.4 -O0 -S -Iinclude -Isrc/unix -Isrc src/unix/async.c
.file "async.c"
.text
.type uv__req_init, @function
uv__req_init:
.LFB2:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
movq -16(%rbp), %rax
movl -20(%rbp), %edx
movl %edx, 8(%rax)
movq -16(%rbp), %rax
addq $16, %rax
movq -8(%rbp), %rdx
addq $32, %rdx
movq %rdx, (%rax)
movq -16(%rbp), %rax
addq $16, %rax
leaq 8(%rax), %rdx
movq -8(%rbp), %rax
addq $32, %rax
addq $8, %rax
movq (%rax), %rax
movq %rax, (%rdx)
movq -16(%rbp), %rax
addq $16, %rax
addq $8, %rax
movq (%rax), %rax
movq -16(%rbp), %rdx
addq $16, %rdx
movq %rdx, (%rax)
movq -8(%rbp), %rax
addq $32, %rax
addq $8, %rax
movq -16(%rbp), %rdx
addq $16, %rdx
movq %rdx, (%rax)
leave
ret
.cfi_endproc
.LFE2:
.size uv__req_init, .-uv__req_init
.type uv__update_time, @function
uv__update_time:
.LFB3:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $32, %rsp
movq %rdi, -8(%rbp)
movl $1, %edi
call uv__hrtime
movq %rax, -24(%rbp)
movabsq $4835703278458516699, %rdx
movq -24(%rbp), %rax
mulq %rdx
shrq $18, %rdx
movq -8(%rbp), %rax
movq %rdx, 544(%rax)
leave
ret
.cfi_endproc
.LFE3:
.size uv__update_time, .-uv__update_time
.type uv__basename_r, @function
uv__basename_r:
.LFB4:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $32, %rsp
movq %rdi, -24(%rbp)
movq -24(%rbp), %rax
movl $47, %esi
movq %rax, %rdi
call strrchr
movq %rax, -8(%rbp)
cmpq $0, -8(%rbp)
jne .L6
movq -24(%rbp), %rax
jmp .L7
.L6:
movq -8(%rbp), %rax
addq $1, %rax
.L7:
leave
ret
.cfi_endproc
.LFE4:
.size uv__basename_r, .-uv__basename_r
.type cmpxchgi, @function
cmpxchgi:
.LFB5:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movl %esi, -12(%rbp)
movl %edx, -16(%rbp)
movl -16(%rbp), %ecx
movl -12(%rbp), %eax
movq -8(%rbp), %rdx
lock cmpxchgl %ecx, (%rdx)
leave
ret
.cfi_endproc
.LFE5:
.size cmpxchgi, .-cmpxchgi
.type cmpxchgl, @function
cmpxchgl:
.LFB6:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movq %rdx, -24(%rbp)
movq -24(%rbp), %rcx
movq -16(%rbp), %rax
movq -8(%rbp), %rdx
lock cmpxchgq %rcx, (%rdx)
leave
ret
.cfi_endproc
.LFE6:
.size cmpxchgl, .-cmpxchgl
.type cpu_relax, @function
cpu_relax:
.LFB7:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
#APP
# 56 "src/unix/atomic-ops.h" 1
rep; nop
# 0 "" 2
#NO_APP
leave
ret
.cfi_endproc
.LFE7:
.size cpu_relax, .-cpu_relax
.globl uv_async_init
.type uv_async_init, @function
uv_async_init:
.LFB8:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $48, %rsp
movq %rdi, -24(%rbp)
movq %rsi, -32(%rbp)
movq %rdx, -40(%rbp)
movq -24(%rbp), %rax
leaq 448(%rax), %rcx
movq -24(%rbp), %rax
movl $uv__async_event, %edx
movq %rcx, %rsi
movq %rax, %rdi
call uv__async_start
movl %eax, -4(%rbp)
cmpl $0, -4(%rbp)
je .L16
movl -4(%rbp), %eax
jmp .L17
.L16:
movq -32(%rbp), %rax
movq -24(%rbp), %rdx
movq %rdx, 8(%rax)
movq -32(%rbp), %rax
movl $1, 16(%rax)
movq -32(%rbp), %rax
movl $8192, 88(%rax)
movq -32(%rbp), %rax
addq $32, %rax
movq -24(%rbp), %rdx
addq $16, %rdx
movq %rdx, (%rax)
movq -32(%rbp), %rax
addq $32, %rax
leaq 8(%rax), %rdx
movq -24(%rbp), %rax
addq $16, %rax
addq $8, %rax
movq (%rax), %rax
movq %rax, (%rdx)
movq -32(%rbp), %rax
addq $32, %rax
addq $8, %rax
movq (%rax), %rax
movq -32(%rbp), %rdx
addq $32, %rdx
movq %rdx, (%rax)
movq -24(%rbp), %rax
addq $16, %rax
addq $8, %rax
movq -32(%rbp), %rdx
addq $32, %rdx
movq %rdx, (%rax)
movq -32(%rbp), %rax
movq $0, 80(%rax)
movq -32(%rbp), %rax
movq -40(%rbp), %rdx
movq %rdx, 96(%rax)
movq -32(%rbp), %rax
movl $0, 120(%rax)
movq -32(%rbp), %rax
addq $104, %rax
movq -24(%rbp), %rdx
addq $432, %rdx
movq %rdx, (%rax)
movq -32(%rbp), %rax
addq $104, %rax
leaq 8(%rax), %rdx
movq -24(%rbp), %rax
addq $432, %rax
addq $8, %rax
movq (%rax), %rax
movq %rax, (%rdx)
movq -32(%rbp), %rax
addq $104, %rax
addq $8, %rax
movq (%rax), %rax
movq -32(%rbp), %rdx
addq $104, %rdx
movq %rdx, (%rax)
movq -24(%rbp), %rax
addq $432, %rax
addq $8, %rax
movq -32(%rbp), %rdx
addq $104, %rdx
movq %rdx, (%rax)
movq -32(%rbp), %rax
movl 88(%rax), %eax
andl $16384, %eax
testl %eax, %eax
jne .L18
movq -32(%rbp), %rax
movl 88(%rax), %eax
movl %eax, %edx
orb $64, %dh
movq -32(%rbp), %rax
movl %edx, 88(%rax)
movq -32(%rbp), %rax
movl 88(%rax), %eax
andl $8192, %eax
testl %eax, %eax
je .L18
movq -32(%rbp), %rax
movq 8(%rax), %rax
movl 8(%rax), %edx
addl $1, %edx
movl %edx, 8(%rax)
.L18:
movl $0, %eax
.L17:
leave
ret
.cfi_endproc
.LFE8:
.size uv_async_init, .-uv_async_init
.globl uv_async_send
.type uv_async_send, @function
uv_async_send:
.LFB9:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $16, %rsp
movq %rdi, -8(%rbp)
movq -8(%rbp), %rax
addq $120, %rax
movl (%rax), %eax
testl %eax, %eax
je .L21
movl $0, %eax
jmp .L22
.L21:
movq -8(%rbp), %rax
addq $120, %rax
movl $1, %edx
movl $0, %esi
movq %rax, %rdi
call cmpxchgi
testl %eax, %eax
jne .L23
movq -8(%rbp), %rax
movq 8(%rax), %rax
addq $448, %rax
movq %rax, %rdi
call uv__async_send
.L23:
movl $0, %eax
.L22:
leave
ret
.cfi_endproc
.LFE9:
.size uv_async_send, .-uv_async_send
.globl uv__async_close
.type uv__async_close, @function
uv__async_close:
.LFB10:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movq -8(%rbp), %rax
addq $104, %rax
addq $8, %rax
movq (%rax), %rax
movq -8(%rbp), %rdx
addq $104, %rdx
movq (%rdx), %rdx
movq %rdx, (%rax)
movq -8(%rbp), %rax
addq $104, %rax
movq (%rax), %rax
leaq 8(%rax), %rdx
movq -8(%rbp), %rax
addq $104, %rax
addq $8, %rax
movq (%rax), %rax
movq %rax, (%rdx)
movq -8(%rbp), %rax
movl 88(%rax), %eax
andl $16384, %eax
testl %eax, %eax
je .L27
movq -8(%rbp), %rax
movl 88(%rax), %eax
movl %eax, %edx
andb $191, %dh
movq -8(%rbp), %rax
movl %edx, 88(%rax)
movq -8(%rbp), %rax
movl 88(%rax), %eax
andl $8192, %eax
testl %eax, %eax
je .L27
movq -8(%rbp), %rax
movq 8(%rax), %rax
movl 8(%rax), %edx
subl $1, %edx
movl %edx, 8(%rax)
.L27:
leave
ret
.cfi_endproc
.LFE10:
.size uv__async_close, .-uv__async_close
.type uv__async_event, @function
uv__async_event:
.LFB11:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $48, %rsp
movq %rdi, -24(%rbp)
movq %rsi, -32(%rbp)
movl %edx, -36(%rbp)
movq -24(%rbp), %rax
addq $432, %rax
movq (%rax), %rax
movq %rax, -8(%rbp)
jmp .L29
.L33:
movq -8(%rbp), %rax
subq $104, %rax
movq %rax, -16(%rbp)
movq -16(%rbp), %rax
addq $120, %rax
movl $0, %edx
movl $1, %esi
movq %rax, %rdi
call cmpxchgi
testl %eax, %eax
je .L35
.L30:
movq -16(%rbp), %rax
movq 96(%rax), %rax
testq %rax, %rax
je .L36
.L32:
movq -16(%rbp), %rax
movq 96(%rax), %rdx
movq -16(%rbp), %rax
movq %rax, %rdi
call *%rdx
jmp .L31
.L35:
nop
jmp .L31
.L36:
nop
.L31:
movq -8(%rbp), %rax
movq (%rax), %rax
movq %rax, -8(%rbp)
.L29:
movq -24(%rbp), %rax
addq $432, %rax
cmpq -8(%rbp), %rax
jne .L33
leave
ret
.cfi_endproc
.LFE11:
.size uv__async_event, .-uv__async_event
.section .rodata
.LC0:
.string "src/unix/async.c"
.LC1:
.string "n == sizeof(val)"
.text
.type uv__async_io, @function
uv__async_io:
.LFB12:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
pushq %rbx
subq $1112, %rsp
movq %rdi, -1096(%rbp)
movq %rsi, -1104(%rbp)
movl %edx, -1108(%rbp)
movq %fs:40, %rax
movq %rax, -24(%rbp)
xorl %eax, %eax
movl $0, -1060(%rbp)
.L44:
movq -1104(%rbp), %rax
movl 48(%rax), %eax
leaq -1056(%rbp), %rcx
movl $1024, %edx
movq %rcx, %rsi
movl %eax, %edi
.cfi_offset 3, -24
call read
movq %rax, -1080(%rbp)
cmpq $0, -1080(%rbp)
jle .L38
movq -1080(%rbp), %rax
addl %eax, -1060(%rbp)
.L38:
cmpq $1024, -1080(%rbp)
jne .L39
jmp .L40
.L39:
cmpq $-1, -1080(%rbp)
jne .L50
.L41:
call __errno_location
movl (%rax), %eax
cmpl $11, %eax
je .L42
call __errno_location
movl (%rax), %eax
cmpl $11, %eax
je .L42
call __errno_location
movl (%rax), %eax
cmpl $4, %eax
jne .L43
jmp .L40
.L43:
call abort
.L40:
jmp .L44
.L50:
nop
.L42:
movq -1104(%rbp), %rax
subq $8, %rax
movq %rax, -1072(%rbp)
movq -1072(%rbp), %rax
movl 64(%rax), %eax
cmpl $-1, %eax
jne .L45
cmpl $8, -1060(%rbp)
je .L46
movl $__PRETTY_FUNCTION__.7474, %ecx
movl $130, %edx
movl $.LC0, %esi
movl $.LC1, %edi
call __assert_fail
.L46:
leaq -1056(%rbp), %rcx
leaq -1088(%rbp), %rax
movl $8, %edx
movq %rcx, %rsi
movq %rax, %rdi
call memcpy
movq -1072(%rbp), %rax
movq (%rax), %rbx
movq -1088(%rbp), %rax
movl %eax, %edx
movq -1072(%rbp), %rcx
movq -1096(%rbp), %rax
movq %rcx, %rsi
movq %rax, %rdi
call *%rbx
jmp .L48
.L45:
movq -1072(%rbp), %rax
movq (%rax), %rbx
movl -1060(%rbp), %edx
movq -1072(%rbp), %rcx
movq -1096(%rbp), %rax
movq %rcx, %rsi
movq %rax, %rdi
call *%rbx
.L48:
movq -24(%rbp), %rax
xorq %fs:40, %rax
je .L49
call __stack_chk_fail
.L49:
addq $1112, %rsp
popq %rbx
leave
ret
.cfi_endproc
.LFE12:
.size uv__async_io, .-uv__async_io
.section .rodata
.LC2:
.string ""
.text
.globl uv__async_send
.type uv__async_send, @function
uv__async_send:
.LFB13:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $48, %rsp
movq %rdi, -40(%rbp)
movq $.LC2, -16(%rbp)
movq $1, -24(%rbp)
movq -40(%rbp), %rax
movl 64(%rax), %eax
movl %eax, -4(%rbp)
cmpl $-1, -4(%rbp)
jne .L52
movq $val.7511, -16(%rbp)
movq $8, -24(%rbp)
movq -40(%rbp), %rax
movl 56(%rax), %eax
movl %eax, -4(%rbp)
.L52:
movq -24(%rbp), %rdx
movq -16(%rbp), %rcx
movl -4(%rbp), %eax
movq %rcx, %rsi
movl %eax, %edi
call write
movl %eax, -8(%rbp)
cmpl $-1, -8(%rbp)
jne .L53
call __errno_location
movl (%rax), %eax
cmpl $4, %eax
je .L52
.L53:
movl -8(%rbp), %eax
cltq
cmpq -24(%rbp), %rax
je .L59
.L54:
cmpl $-1, -8(%rbp)
jne .L56
call __errno_location
movl (%rax), %eax
cmpl $11, %eax
je .L60
call __errno_location
movl (%rax), %eax
cmpl $11, %eax
je .L61
.L56:
call abort
.L59:
nop
jmp .L58
.L60:
nop
jmp .L58
.L61:
nop
.L58:
leave
ret
.cfi_endproc
.LFE13:
.size uv__async_send, .-uv__async_send
.globl uv__async_init
.type uv__async_init, @function
uv__async_init:
.LFB14:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movq -8(%rbp), %rax
movl $-1, 56(%rax)
movq -8(%rbp), %rax
movl $-1, 64(%rax)
leave
ret
.cfi_endproc
.LFE14:
.size uv__async_init, .-uv__async_init
.section .rodata
.LC3:
.string "/proc/self/fd/%d"
.text
.globl uv__async_start
.type uv__async_start, @function
uv__async_start:
.LFB15:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $96, %rsp
movq %rdi, -72(%rbp)
movq %rsi, -80(%rbp)
movq %rdx, -88(%rbp)
movq %fs:40, %rax
movq %rax, -8(%rbp)
xorl %eax, %eax
movq -80(%rbp), %rax
movl 56(%rax), %eax
cmpl $-1, %eax
je .L65
movl $0, %eax
jmp .L66
.L65:
call uv__async_eventfd
movl %eax, -52(%rbp)
cmpl $0, -52(%rbp)
js .L67
movl -52(%rbp), %eax
movl %eax, -64(%rbp)
movl $-1, -60(%rbp)
jmp .L68
.L67:
cmpl $-38, -52(%rbp)
jne .L68
leaq -64(%rbp), %rax
movl $2048, %esi
movq %rax, %rdi
call uv__make_pipe
movl %eax, -52(%rbp)
cmpl $0, -52(%rbp)
jne .L68
movl -64(%rbp), %ecx
movl $.LC3, %edx
leaq -48(%rbp), %rax
movl $32, %esi
movq %rax, %rdi
movl $0, %eax
call snprintf
leaq -48(%rbp), %rax
movl $2, %esi
movq %rax, %rdi
call uv__open_cloexec
movl %eax, -56(%rbp)
cmpl $0, -56(%rbp)
js .L68
movl -64(%rbp), %eax
movl %eax, %edi
call uv__close
movl -60(%rbp), %eax
movl %eax, %edi
call uv__close
movl -56(%rbp), %eax
movl %eax, -64(%rbp)
movl -56(%rbp), %eax
movl %eax, -60(%rbp)
.L68:
cmpl $0, -52(%rbp)
jns .L69
movl -52(%rbp), %eax
jmp .L66
.L69:
movl -64(%rbp), %eax
movq -80(%rbp), %rdx
leaq 8(%rdx), %rcx
movl %eax, %edx
movl $uv__async_io, %esi
movq %rcx, %rdi
call uv__io_init
movq -80(%rbp), %rax
leaq 8(%rax), %rcx
movq -72(%rbp), %rax
movl $1, %edx
movq %rcx, %rsi
movq %rax, %rdi
call uv__io_start
movl -60(%rbp), %edx
movq -80(%rbp), %rax
movl %edx, 64(%rax)
movq -80(%rbp), %rax
movq -88(%rbp), %rdx
movq %rdx, (%rax)
movl $0, %eax
.L66:
movq -8(%rbp), %rdx
xorq %fs:40, %rdx
je .L71
call __stack_chk_fail
.L71:
leave
ret
.cfi_endproc
.LFE15:
.size uv__async_start, .-uv__async_start
.globl uv__async_stop
.type uv__async_stop, @function
uv__async_stop:
.LFB16:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $16, %rsp
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movq -16(%rbp), %rax
movl 56(%rax), %eax
cmpl $-1, %eax
je .L78
.L73:
movq -16(%rbp), %rax
movl 64(%rax), %eax
cmpl $-1, %eax
je .L75
movq -16(%rbp), %rax
movl 64(%rax), %edx
movq -16(%rbp), %rax
movl 56(%rax), %eax
cmpl %eax, %edx
je .L76
movq -16(%rbp), %rax
movl 64(%rax), %eax
movl %eax, %edi
call uv__close
.L76:
movq -16(%rbp), %rax
movl $-1, 64(%rax)
.L75:
movq -16(%rbp), %rax
leaq 8(%rax), %rcx
movq -8(%rbp), %rax
movl $1, %edx
movq %rcx, %rsi
movq %rax, %rdi
call uv__io_stop
movq -16(%rbp), %rax
movl 56(%rax), %eax
movl %eax, %edi
call uv__close
movq -16(%rbp), %rax
movl $-1, 56(%rax)
jmp .L77
.L78:
nop
.L77:
leave
ret
.cfi_endproc
.LFE16:
.size uv__async_stop, .-uv__async_stop
.type uv__async_eventfd, @function
uv__async_eventfd:
.LFB17:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
subq $16, %rsp
movl no_eventfd2.7590(%rip), %eax
testl %eax, %eax
jne .L90
.L80:
movl $526336, %esi
movl $0, %edi
call uv__eventfd2
movl %eax, -4(%rbp)
cmpl $-1, -4(%rbp)
je .L82
movl -4(%rbp), %eax
jmp .L83
.L82:
call __errno_location
movl (%rax), %eax
cmpl $38, %eax
je .L84
call __errno_location
movl (%rax), %eax
negl %eax
jmp .L83
.L84:
movl $1, no_eventfd2.7590(%rip)
jmp .L81
.L90:
nop
.L81:
movl no_eventfd.7591(%rip), %eax
testl %eax, %eax
jne .L91
.L85:
movl $0, %edi
call uv__eventfd
movl %eax, -4(%rbp)
cmpl $-1, -4(%rbp)
je .L87
movl -4(%rbp), %eax
movl $1, %esi
movl %eax, %edi
call uv__cloexec
movl -4(%rbp), %eax
movl $1, %esi
movl %eax, %edi
call uv__nonblock
movl -4(%rbp), %eax
jmp .L83
.L87:
call __errno_location
movl (%rax), %eax
cmpl $38, %eax
je .L88
call __errno_location
movl (%rax), %eax
negl %eax
jmp .L83
.L88:
movl $1, no_eventfd.7591(%rip)
jmp .L86
.L91:
nop
.L86:
movl $-38, %eax
.L83:
leave
ret
.cfi_endproc
.LFE17:
.size uv__async_eventfd, .-uv__async_eventfd
.local no_eventfd2.7590
.comm no_eventfd2.7590,4,4
.local no_eventfd.7591
.comm no_eventfd.7591,4,4
.section .rodata
.align 8
.type val.7511, @object
.size val.7511, 8
val.7511:
.quad 1
.type __PRETTY_FUNCTION__.7474, @object
.size __PRETTY_FUNCTION__.7474, 13
__PRETTY_FUNCTION__.7474:
.string "uv__async_io"
.align 16
.type __PRETTY_FUNCTION__.7405, @object
.size __PRETTY_FUNCTION__.7405, 16
__PRETTY_FUNCTION__.7405:
.string "uv__async_close"
.type __PRETTY_FUNCTION__.7319, @object
.size __PRETTY_FUNCTION__.7319, 14
__PRETTY_FUNCTION__.7319:
.string "uv_async_init"
.ident "GCC: (Ubuntu/Linaro 4.4.7-8ubuntu1) 4.4.7"
.section .note.GNU-stack,"",@progbits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment