Skip to content

Instantly share code, notes, and snippets.

@mpenick
Created May 12, 2015 04:13
Show Gist options
  • Select an option

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

Select an option

Save mpenick/77f71d9fa6a72ead2a5e to your computer and use it in GitHub Desktop.
; Generated with (4.1.2): gcc -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
.cfi_offset 6, -16
movq %rsp, %rbp
.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
leaq 24(%rax), %rdx
movq -8(%rbp), %rax
addq $40, %rax
movq (%rax), %rax
movq %rax, (%rdx)
movq -16(%rbp), %rax
addq $24, %rax
movq (%rax), %rax
movq -16(%rbp), %rdx
addq $16, %rdx
movq %rdx, (%rax)
movq -8(%rbp), %rax
addq $40, %rax
movq -16(%rbp), %rdx
addq $16, %rdx
movq %rdx, (%rax)
popq %rbp
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp
movq %rdi, -8(%rbp)
movl $1, %edi
call uv__hrtime
movq %rax, -16(%rbp)
movabsq $4835703278458516699, %rdx
movq -16(%rbp), %rax
mulq %rdx
shrq $18, %rdx
movq -8(%rbp), %rax
movq %rdx, 544(%rax)
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.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 .L4
movq -24(%rbp), %rax
jmp .L5
.L4:
movq -8(%rbp), %rax
addq $1, %rax
.L5:
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.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)
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE5:
.size cmpxchgi, .-cmpxchgi
.type cmpxchgl, @function
cmpxchgl:
.LFB6:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.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)
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE6:
.size cmpxchgl, .-cmpxchgl
.type cpu_relax, @function
cpu_relax:
.LFB7:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
#APP
# 56 "src/unix/atomic-ops.h" 1
rep; nop
# 0 "" 2
#NO_APP
popq %rbp
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.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 .L10
movl -4(%rbp), %eax
jmp .L11
.L10:
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
leaq 40(%rax), %rdx
movq -24(%rbp), %rax
addq $24, %rax
movq (%rax), %rax
movq %rax, (%rdx)
movq -32(%rbp), %rax
addq $40, %rax
movq (%rax), %rax
movq -32(%rbp), %rdx
addq $32, %rdx
movq %rdx, (%rax)
movq -24(%rbp), %rax
addq $24, %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
leaq 112(%rax), %rdx
movq -24(%rbp), %rax
addq $440, %rax
movq (%rax), %rax
movq %rax, (%rdx)
movq -32(%rbp), %rax
addq $112, %rax
movq (%rax), %rax
movq -32(%rbp), %rdx
addq $104, %rdx
movq %rdx, (%rax)
movq -24(%rbp), %rax
addq $440, %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 .L12
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 .L12
movq -32(%rbp), %rax
movq 8(%rax), %rax
movl 8(%rax), %edx
addl $1, %edx
movl %edx, 8(%rax)
.L12:
movl $0, %eax
.L11:
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.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 .L14
movl $0, %eax
jmp .L15
.L14:
movq -8(%rbp), %rax
addq $120, %rax
movl $1, %edx
movl $0, %esi
movq %rax, %rdi
call cmpxchgi
testl %eax, %eax
jne .L16
movq -8(%rbp), %rax
movq 8(%rax), %rax
addq $448, %rax
movq %rax, %rdi
call uv__async_send
.L16:
movl $0, %eax
.L15:
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp)
movq -8(%rbp), %rax
addq $112, %rax
movq (%rax), %rax
movq -8(%rbp), %rdx
movq 104(%rdx), %rdx
movq %rdx, (%rax)
movq -8(%rbp), %rax
addq $104, %rax
movq (%rax), %rax
leaq 8(%rax), %rdx
movq -8(%rbp), %rax
addq $112, %rax
movq (%rax), %rax
movq %rax, (%rdx)
movq -8(%rbp), %rax
movl 88(%rax), %eax
andl $16384, %eax
testl %eax, %eax
je .L17
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 .L17
movq -8(%rbp), %rax
movq 8(%rax), %rax
movl 8(%rax), %edx
subl $1, %edx
movl %edx, 8(%rax)
.L17:
popq %rbp
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $48, %rsp
movq %rdi, -24(%rbp)
movq %rsi, -32(%rbp)
movl %edx, -36(%rbp)
movq -24(%rbp), %rax
movq 432(%rax), %rax
movq %rax, -16(%rbp)
jmp .L20
.L24:
movq -16(%rbp), %rax
subq $104, %rax
movq %rax, -8(%rbp)
movq -8(%rbp), %rax
addq $120, %rax
movl $0, %edx
movl $1, %esi
movq %rax, %rdi
call cmpxchgi
testl %eax, %eax
je .L25
.L21:
movq -8(%rbp), %rax
movq 96(%rax), %rax
testq %rax, %rax
je .L26
.L23:
movq -8(%rbp), %rax
movq 96(%rax), %rdx
movq -8(%rbp), %rax
movq %rax, %rdi
call *%rdx
jmp .L22
.L25:
nop
jmp .L22
.L26:
nop
.L22:
movq -16(%rbp), %rax
movq (%rax), %rax
movq %rax, -16(%rbp)
.L20:
movq -24(%rbp), %rax
addq $432, %rax
cmpq -16(%rbp), %rax
jne .L24
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $1104, %rsp
movq %rdi, -1080(%rbp)
movq %rsi, -1088(%rbp)
movl %edx, -1092(%rbp)
movq %fs:40, %rax
movq %rax, -8(%rbp)
xorl %eax, %eax
movl $0, -1044(%rbp)
.L34:
movq -1088(%rbp), %rax
movl 48(%rax), %eax
leaq -1040(%rbp), %rcx
movl $1024, %edx
movq %rcx, %rsi
movl %eax, %edi
call read
movq %rax, -1064(%rbp)
cmpq $0, -1064(%rbp)
jle .L28
movq -1064(%rbp), %rax
addl %eax, -1044(%rbp)
.L28:
cmpq $1024, -1064(%rbp)
je .L39
.L29:
cmpq $-1, -1064(%rbp)
jne .L40
.L31:
call __errno_location
movl (%rax), %eax
cmpl $11, %eax
je .L32
call __errno_location
movl (%rax), %eax
cmpl $11, %eax
je .L32
call __errno_location
movl (%rax), %eax
cmpl $4, %eax
je .L41
.L33:
call abort
.L39:
nop
jmp .L30
.L41:
nop
.L30:
jmp .L34
.L40:
nop
.L32:
movq -1088(%rbp), %rax
subq $8, %rax
movq %rax, -1056(%rbp)
movq -1056(%rbp), %rax
movl 64(%rax), %eax
cmpl $-1, %eax
jne .L35
cmpl $8, -1044(%rbp)
je .L36
movl $__PRETTY_FUNCTION__.7315, %ecx
movl $130, %edx
movl $.LC0, %esi
movl $.LC1, %edi
call __assert_fail
.L36:
leaq -1040(%rbp), %rax
movq (%rax), %rax
movq %rax, -1072(%rbp)
movq -1056(%rbp), %rax
movq (%rax), %r8
movq -1072(%rbp), %rax
movl %eax, %edx
movq -1056(%rbp), %rcx
movq -1080(%rbp), %rax
movq %rcx, %rsi
movq %rax, %rdi
call *%r8
jmp .L27
.L35:
movq -1056(%rbp), %rax
movq (%rax), %r8
movl -1044(%rbp), %edx
movq -1056(%rbp), %rcx
movq -1080(%rbp), %rax
movq %rcx, %rsi
movq %rax, %rdi
call *%r8
.L27:
movq -8(%rbp), %rax
xorq %fs:40, %rax
je .L38
call __stack_chk_fail
.L38:
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $48, %rsp
movq %rdi, -40(%rbp)
movq $.LC2, -24(%rbp)
movq $1, -16(%rbp)
movq -40(%rbp), %rax
movl 64(%rax), %eax
movl %eax, -8(%rbp)
cmpl $-1, -8(%rbp)
jne .L43
movq $val.7323, -24(%rbp)
movq $8, -16(%rbp)
movq -40(%rbp), %rax
movl 56(%rax), %eax
movl %eax, -8(%rbp)
.L43:
movq -16(%rbp), %rdx
movq -24(%rbp), %rcx
movl -8(%rbp), %eax
movq %rcx, %rsi
movl %eax, %edi
call write
movl %eax, -4(%rbp)
cmpl $-1, -4(%rbp)
jne .L44
call __errno_location
movl (%rax), %eax
cmpl $4, %eax
je .L43
.L44:
movl -4(%rbp), %eax
cltq
cmpq -16(%rbp), %rax
je .L49
.L45:
cmpl $-1, -4(%rbp)
jne .L47
call __errno_location
movl (%rax), %eax
cmpl $11, %eax
je .L50
call __errno_location
movl (%rax), %eax
cmpl $11, %eax
je .L50
.L47:
call abort
.L49:
nop
jmp .L42
.L50:
nop
.L42:
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.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)
popq %rbp
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.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 .L53
movl $0, %eax
jmp .L54
.L53:
call uv__async_eventfd
movl %eax, -56(%rbp)
cmpl $0, -56(%rbp)
js .L55
movl -56(%rbp), %eax
movl %eax, -64(%rbp)
movl $-1, -60(%rbp)
jmp .L56
.L55:
cmpl $-38, -56(%rbp)
jne .L56
leaq -64(%rbp), %rax
movl $2048, %esi
movq %rax, %rdi
call uv__make_pipe
movl %eax, -56(%rbp)
cmpl $0, -56(%rbp)
jne .L56
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, -52(%rbp)
cmpl $0, -52(%rbp)
js .L56
movl -64(%rbp), %eax
movl %eax, %edi
call uv__close
movl -60(%rbp), %eax
movl %eax, %edi
call uv__close
movl -52(%rbp), %eax
movl %eax, -64(%rbp)
movl -52(%rbp), %eax
movl %eax, -60(%rbp)
.L56:
cmpl $0, -56(%rbp)
jns .L57
movl -56(%rbp), %eax
jmp .L54
.L57:
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
.L54:
movq -8(%rbp), %rdx
xorq %fs:40, %rdx
je .L58
call __stack_chk_fail
.L58:
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.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 .L64
.L60:
movq -16(%rbp), %rax
movl 64(%rax), %eax
cmpl $-1, %eax
je .L62
movq -16(%rbp), %rax
movl 64(%rax), %edx
movq -16(%rbp), %rax
movl 56(%rax), %eax
cmpl %eax, %edx
je .L63
movq -16(%rbp), %rax
movl 64(%rax), %eax
movl %eax, %edi
call uv__close
.L63:
movq -16(%rbp), %rax
movl $-1, 64(%rax)
.L62:
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 .L59
.L64:
nop
.L59:
leave
.cfi_def_cfa 7, 8
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
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp
movl no_eventfd2.7344(%rip), %eax
testl %eax, %eax
jne .L75
.L66:
movl $526336, %esi
movl $0, %edi
call uv__eventfd2
movl %eax, -4(%rbp)
cmpl $-1, -4(%rbp)
je .L68
movl -4(%rbp), %eax
jmp .L69
.L68:
call __errno_location
movl (%rax), %eax
cmpl $38, %eax
je .L70
call __errno_location
movl (%rax), %eax
negl %eax
jmp .L69
.L70:
movl $1, no_eventfd2.7344(%rip)
jmp .L67
.L75:
nop
.L67:
movl no_eventfd.7345(%rip), %eax
testl %eax, %eax
jne .L76
.L71:
movl $0, %edi
call uv__eventfd
movl %eax, -4(%rbp)
cmpl $-1, -4(%rbp)
je .L73
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 .L69
.L73:
call __errno_location
movl (%rax), %eax
cmpl $38, %eax
je .L74
call __errno_location
movl (%rax), %eax
negl %eax
jmp .L69
.L74:
movl $1, no_eventfd.7345(%rip)
jmp .L72
.L76:
nop
.L72:
movl $-38, %eax
.L69:
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE17:
.size uv__async_eventfd, .-uv__async_eventfd
.local no_eventfd2.7344
.comm no_eventfd2.7344,4,4
.local no_eventfd.7345
.comm no_eventfd.7345,4,4
.section .rodata
.align 8
.type val.7323, @object
.size val.7323, 8
val.7323:
.quad 1
.type __PRETTY_FUNCTION__.7315, @object
.size __PRETTY_FUNCTION__.7315, 13
__PRETTY_FUNCTION__.7315:
.string "uv__async_io"
.ident "GCC: (Ubuntu/Linaro 4.6.4-6ubuntu2) 4.6.4"
.section .note.GNU-stack,"",@progbits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment