Skip to content

Instantly share code, notes, and snippets.

@fritzone
Created February 25, 2016 12:19
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 fritzone/42be237af8e3e2b1ca03 to your computer and use it in GitHub Desktop.
Save fritzone/42be237af8e3e2b1ca03 to your computer and use it in GitHub Desktop.
asm stuff
.file "b.cpp"
.intel_syntax noprefix
.text
.p2align 4,,15
.globl _Z6mult_2PfS_S_i
.type _Z6mult_2PfS_S_i, @function
_Z6mult_2PfS_S_i:
.LFB694:
.cfi_startproc
push r13
.cfi_def_cfa_offset 16
.cfi_offset 13, -16
push r12
.cfi_def_cfa_offset 24
.cfi_offset 12, -24
push rbp
.cfi_def_cfa_offset 32
.cfi_offset 6, -32
push rbx
.cfi_def_cfa_offset 40
.cfi_offset 3, -40
#APP
# 5 "b.cpp" 1
int $0x03
# 0 "" 2
#NO_APP
test ecx, ecx
jle .L2
lea eax, [rcx-1]
mov r12, rdi
movsx r10, ecx
mov r13, rdx
sal r10, 2
xor ebx, ebx
lea rdi, [4+rax*4]
xor ebp, ebp
.L3:
lea r9, [r13+0+rbx]
lea r11, [r12+rbx]
xor edx, edx
.p2align 4,,10
.p2align 3
.L7:
lea r8, [rsi+rdx]
movss xmm1, DWORD PTR [r9]
xor eax, eax
.p2align 4,,10
.p2align 3
.L6:
movss xmm0, DWORD PTR [r11+rax*4]
add rax, 1
mulss xmm0, DWORD PTR [r8]
add r8, r10
cmp ecx, eax
addss xmm1, xmm0
movss DWORD PTR [r9], xmm1
jg .L6
add rdx, 4
add r9, 4
cmp rdx, rdi
jne .L7
add ebp, 1
add rbx, r10
cmp ebp, ecx
jne .L3
.L2:
#APP
# 13 "b.cpp" 1
int $0x03
# 0 "" 2
#NO_APP
pop rbx
.cfi_def_cfa_offset 32
pop rbp
.cfi_def_cfa_offset 24
pop r12
.cfi_def_cfa_offset 16
pop r13
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE694:
.size _Z6mult_2PfS_S_i, .-_Z6mult_2PfS_S_i
.p2align 4,,15
.globl _Z6mult_1RKSt6vectorIS_IfSaIfEESaIS1_EES5_RS3_
.type _Z6mult_1RKSt6vectorIS_IfSaIfEESaIS1_EES5_RS3_, @function
_Z6mult_1RKSt6vectorIS_IfSaIfEESaIS1_EES5_RS3_:
.LFB695:
.cfi_startproc
push r12
.cfi_def_cfa_offset 16
.cfi_offset 12, -16
push rbp
.cfi_def_cfa_offset 24
.cfi_offset 6, -24
push rbx
.cfi_def_cfa_offset 32
.cfi_offset 3, -32
#APP
# 19 "b.cpp" 1
int $0x04
# 0 "" 2
#NO_APP
mov rbx, QWORD PTR [rdx]
mov rax, QWORD PTR [rdx+8]
movabs rdx, -6148914691236517205
sub rax, rbx
sar rax, 3
imul rax, rdx
test eax, eax
jle .L11
lea r8d, [rax-1]
mov r12, QWORD PTR [rdi]
mov r10, QWORD PTR [rsi]
xor r11d, r11d
add r8, 1
lea rbp, [r8+r8*2]
sal r8, 2
sal rbp, 3
.L12:
mov r9, QWORD PTR [r12+r11]
mov rdi, QWORD PTR [rbx+r11]
xor ecx, ecx
.p2align 4,,10
.p2align 3
.L16:
movss xmm1, DWORD PTR [rdi+rcx]
mov rdx, r10
xor eax, eax
jmp .L15
.p2align 4,,10
.p2align 3
.L13:
movaps xmm1, xmm0
.L15:
mov rsi, QWORD PTR [rdx]
movss xmm0, DWORD PTR [r9+rax]
add rax, 4
add rdx, 24
cmp r8, rax
mulss xmm0, DWORD PTR [rsi+rcx]
addss xmm0, xmm1
movss DWORD PTR [rdi+rcx], xmm0
jne .L13
add rcx, 4
cmp rcx, r8
jne .L16
add r11, 24
cmp r11, rbp
jne .L12
.L11:
#APP
# 30 "b.cpp" 1
int $0x04
# 0 "" 2
#NO_APP
pop rbx
.cfi_def_cfa_offset 24
pop rbp
.cfi_def_cfa_offset 16
pop r12
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE695:
.size _Z6mult_1RKSt6vectorIS_IfSaIfEESaIS1_EES5_RS3_, .-_Z6mult_1RKSt6vectorIS_IfSaIfEESaIS1_EES5_RS3_
.section .text._ZNSt6vectorIfSaIfEEC2EmRKS0_,"axG",@progbits,_ZNSt6vectorIfSaIfEEC5EmRKS0_,comdat
.align 2
.p2align 4,,15
.weak _ZNSt6vectorIfSaIfEEC2EmRKS0_
.type _ZNSt6vectorIfSaIfEEC2EmRKS0_, @function
_ZNSt6vectorIfSaIfEEC2EmRKS0_:
.LFB714:
.cfi_startproc
push r12
.cfi_def_cfa_offset 16
.cfi_offset 12, -16
test rsi, rsi
push rbp
.cfi_def_cfa_offset 24
.cfi_offset 6, -24
mov rbp, rdi
push rbx
.cfi_def_cfa_offset 32
.cfi_offset 3, -32
mov rbx, rsi
mov QWORD PTR [rdi], 0
mov QWORD PTR [rdi+8], 0
mov QWORD PTR [rdi+16], 0
jne .L28
xor edx, edx
mov QWORD PTR [rdi+16], 0
mov QWORD PTR [rbp+8], rdx
pop rbx
.cfi_remember_state
.cfi_def_cfa_offset 24
pop rbp
.cfi_def_cfa_offset 16
pop r12
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L28:
.cfi_restore_state
movabs rax, 4611686018427387903
cmp rsi, rax
ja .L29
lea r12, [0+rsi*4]
mov rdi, r12
call _Znwm
lea rdx, [rax+r12]
mov QWORD PTR [rbp+0], rax
mov QWORD PTR [rbp+8], rax
mov QWORD PTR [rbp+16], rdx
.p2align 4,,10
.p2align 3
.L22:
mov DWORD PTR [rax], 0x00000000
add rax, 4
sub rbx, 1
jne .L22
mov QWORD PTR [rbp+8], rdx
pop rbx
.cfi_remember_state
.cfi_def_cfa_offset 24
pop rbp
.cfi_def_cfa_offset 16
pop r12
.cfi_def_cfa_offset 8
ret
.L29:
.cfi_restore_state
call _ZSt17__throw_bad_allocv
.cfi_endproc
.LFE714:
.size _ZNSt6vectorIfSaIfEEC2EmRKS0_, .-_ZNSt6vectorIfSaIfEEC2EmRKS0_
.weak _ZNSt6vectorIfSaIfEEC1EmRKS0_
.set _ZNSt6vectorIfSaIfEEC1EmRKS0_,_ZNSt6vectorIfSaIfEEC2EmRKS0_
.section .text._ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_,"axG",@progbits,_ZNSt6vectorIS_IfSaIfEESaIS1_EEC5EmRKS1_RKS2_,comdat
.align 2
.p2align 4,,15
.weak _ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_
.type _ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_, @function
_ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_:
.LFB726:
.cfi_startproc
.cfi_personality 0x3,__gxx_personality_v0
.cfi_lsda 0x3,.LLSDA726
push r15
.cfi_def_cfa_offset 16
.cfi_offset 15, -16
push r14
.cfi_def_cfa_offset 24
.cfi_offset 14, -24
mov r14, rdi
push r13
.cfi_def_cfa_offset 32
.cfi_offset 13, -32
push r12
.cfi_def_cfa_offset 40
.cfi_offset 12, -40
push rbp
.cfi_def_cfa_offset 48
.cfi_offset 6, -48
mov rbp, rsi
push rbx
.cfi_def_cfa_offset 56
.cfi_offset 3, -56
sub rsp, 24
.cfi_def_cfa_offset 80
test rsi, rsi
mov QWORD PTR [rdi], 0
mov QWORD PTR [rdi+8], 0
mov QWORD PTR [rdi+16], 0
jne .L63
mov QWORD PTR [rdi+16], 0
xor eax, eax
.L47:
mov QWORD PTR [r14+8], rax
add rsp, 24
.cfi_remember_state
.cfi_def_cfa_offset 56
pop rbx
.cfi_def_cfa_offset 48
pop rbp
.cfi_def_cfa_offset 40
pop r12
.cfi_def_cfa_offset 32
pop r13
.cfi_def_cfa_offset 24
pop r14
.cfi_def_cfa_offset 16
pop r15
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L63:
.cfi_restore_state
movabs rax, 768614336404564650
cmp rsi, rax
ja .L64
lea rbx, [rsi+rsi*2]
mov r12, rdx
movabs r15, 4611686018427387903
sal rbx, 3
mov rdi, rbx
.LEHB0:
call _Znwm
.LEHE0:
add rbx, rax
mov QWORD PTR [rsp+8], rax
mov QWORD PTR [r14], rax
mov QWORD PTR [r14+16], rbx
mov QWORD PTR [r14+8], rax
mov rbx, rax
jmp .L38
.p2align 4,,10
.p2align 3
.L34:
add r13, r8
mov QWORD PTR [rbx], r8
mov QWORD PTR [rbx+8], r8
mov QWORD PTR [rbx+16], r13
mov rsi, QWORD PTR [r12]
xor r13d, r13d
mov rcx, QWORD PTR [r12+8]
sub rcx, rsi
sar rcx, 2
test rcx, rcx
je .L36
lea r13, [0+rcx*4]
mov rdi, r8
mov rdx, r13
call memmove
mov r8, rax
.L36:
add r8, r13
mov QWORD PTR [rbx+8], r8
.L33:
add rbx, 24
sub rbp, 1
je .L65
.L38:
test rbx, rbx
je .L33
mov rcx, QWORD PTR [r12+8]
sub rcx, QWORD PTR [r12]
xor r13d, r13d
xor r8d, r8d
mov QWORD PTR [rbx], 0
mov QWORD PTR [rbx+8], 0
mov QWORD PTR [rbx+16], 0
sar rcx, 2
test rcx, rcx
je .L34
cmp rcx, r15
ja .L66
lea r13, [0+rcx*4]
mov rdi, r13
.LEHB1:
call _Znwm
mov r8, rax
jmp .L34
.p2align 4,,10
.p2align 3
.L65:
mov rax, QWORD PTR [r14+16]
jmp .L47
.L66:
call _ZSt17__throw_bad_allocv
.LEHE1:
.L51:
mov rdi, rax
call __cxa_begin_catch
cmp QWORD PTR [rsp+8], rbx
je .L45
.L56:
mov rax, QWORD PTR [rsp+8]
mov rdi, QWORD PTR [rax]
test rdi, rdi
je .L44
call _ZdlPv
.L44:
add QWORD PTR [rsp+8], 24
cmp QWORD PTR [rsp+8], rbx
jne .L56
.L45:
.LEHB2:
call __cxa_rethrow
.LEHE2:
.L64:
.LEHB3:
call _ZSt17__throw_bad_allocv
.LEHE3:
.L50:
mov rbx, rax
call __cxa_end_catch
mov rdi, QWORD PTR [r14]
test rdi, rdi
je .L41
call _ZdlPv
.L41:
mov rdi, rbx
.LEHB4:
call _Unwind_Resume
.LEHE4:
.cfi_endproc
.LFE726:
.globl __gxx_personality_v0
.section .gcc_except_table._ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_,"aG",@progbits,_ZNSt6vectorIS_IfSaIfEESaIS1_EEC5EmRKS1_RKS2_,comdat
.align 4
.LLSDA726:
.byte 0xff
.byte 0x3
.uleb128 .LLSDATT726-.LLSDATTD726
.LLSDATTD726:
.byte 0x1
.uleb128 .LLSDACSE726-.LLSDACSB726
.LLSDACSB726:
.uleb128 .LEHB0-.LFB726
.uleb128 .LEHE0-.LEHB0
.uleb128 0
.uleb128 0
.uleb128 .LEHB1-.LFB726
.uleb128 .LEHE1-.LEHB1
.uleb128 .L51-.LFB726
.uleb128 0x1
.uleb128 .LEHB2-.LFB726
.uleb128 .LEHE2-.LEHB2
.uleb128 .L50-.LFB726
.uleb128 0
.uleb128 .LEHB3-.LFB726
.uleb128 .LEHE3-.LEHB3
.uleb128 0
.uleb128 0
.uleb128 .LEHB4-.LFB726
.uleb128 .LEHE4-.LEHB4
.uleb128 0
.uleb128 0
.LLSDACSE726:
.byte 0x1
.byte 0
.align 4
.long 0
.LLSDATT726:
.section .text._ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_,"axG",@progbits,_ZNSt6vectorIS_IfSaIfEESaIS1_EEC5EmRKS1_RKS2_,comdat
.size _ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_, .-_ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_
.weak _ZNSt6vectorIS_IfSaIfEESaIS1_EEC1EmRKS1_RKS2_
.set _ZNSt6vectorIS_IfSaIfEESaIS1_EEC1EmRKS1_RKS2_,_ZNSt6vectorIS_IfSaIfEESaIS1_EEC2EmRKS1_RKS2_
.section .text._ZNSt6vectorIS_IfSaIfEESaIS1_EED2Ev,"axG",@progbits,_ZNSt6vectorIS_IfSaIfEESaIS1_EED5Ev,comdat
.align 2
.p2align 4,,15
.weak _ZNSt6vectorIS_IfSaIfEESaIS1_EED2Ev
.type _ZNSt6vectorIS_IfSaIfEESaIS1_EED2Ev, @function
_ZNSt6vectorIS_IfSaIfEESaIS1_EED2Ev:
.LFB729:
.cfi_startproc
push r12
.cfi_def_cfa_offset 16
.cfi_offset 12, -16
mov r12, rdi
push rbp
.cfi_def_cfa_offset 24
.cfi_offset 6, -24
push rbx
.cfi_def_cfa_offset 32
.cfi_offset 3, -32
mov rbp, QWORD PTR [rdi+8]
mov rbx, QWORD PTR [rdi]
cmp rbp, rbx
je .L73
.p2align 4,,10
.p2align 3
.L71:
mov rdi, QWORD PTR [rbx]
test rdi, rdi
je .L69
call _ZdlPv
.L69:
add rbx, 24
cmp rbp, rbx
jne .L71
mov rdi, QWORD PTR [r12]
.L68:
test rdi, rdi
je .L67
pop rbx
.cfi_remember_state
.cfi_def_cfa_offset 24
pop rbp
.cfi_def_cfa_offset 16
pop r12
.cfi_def_cfa_offset 8
jmp _ZdlPv
.p2align 4,,10
.p2align 3
.L67:
.cfi_restore_state
pop rbx
.cfi_remember_state
.cfi_def_cfa_offset 24
pop rbp
.cfi_def_cfa_offset 16
pop r12
.cfi_def_cfa_offset 8
ret
.L73:
.cfi_restore_state
mov rdi, rbp
jmp .L68
.cfi_endproc
.LFE729:
.size _ZNSt6vectorIS_IfSaIfEESaIS1_EED2Ev, .-_ZNSt6vectorIS_IfSaIfEESaIS1_EED2Ev
.weak _ZNSt6vectorIS_IfSaIfEESaIS1_EED1Ev
.set _ZNSt6vectorIS_IfSaIfEESaIS1_EED1Ev,_ZNSt6vectorIS_IfSaIfEESaIS1_EED2Ev
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB698:
.cfi_startproc
.cfi_personality 0x3,__gxx_personality_v0
.cfi_lsda 0x3,.LLSDA698
push r12
.cfi_def_cfa_offset 16
.cfi_offset 12, -16
mov edi, 4194304
push rbp
.cfi_def_cfa_offset 24
.cfi_offset 6, -24
push rbx
.cfi_def_cfa_offset 32
.cfi_offset 3, -32
sub rsp, 176
.cfi_def_cfa_offset 208
.LEHB5:
call _Znam
mov edi, 4194304
mov r12, rax
call _Znam
mov edi, 4194304
mov rbp, rax
call _Znam
mov ecx, 1024
mov rdx, rax
mov rsi, rbp
mov rdi, r12
mov rbx, rax
call _Z6mult_2PfS_S_i
test r12, r12
je .L79
mov rdi, r12
call _ZdaPv
.L79:
test rbp, rbp
je .L80
mov rdi, rbp
call _ZdaPv
.L80:
test rbx, rbx
je .L81
mov rdi, rbx
call _ZdaPv
.L81:
lea rdx, [rsp+80]
lea rdi, [rsp+144]
mov esi, 1024
call _ZNSt6vectorIfSaIfEEC1EmRKS0_
.LEHE5:
lea rcx, [rsp+112]
lea rdx, [rsp+144]
lea rdi, [rsp+16]
mov esi, 1024
.LEHB6:
call _ZNSt6vectorIS_IfSaIfEESaIS1_EEC1EmRKS1_RKS2_
.LEHE6:
mov rdi, QWORD PTR [rsp+144]
test rdi, rdi
je .L82
call _ZdlPv
.L82:
lea rdx, [rsp+112]
lea rdi, [rsp+80]
mov esi, 1024
.LEHB7:
call _ZNSt6vectorIfSaIfEEC1EmRKS0_
.LEHE7:
lea rcx, [rsp+144]
lea rdx, [rsp+80]
lea rdi, [rsp+48]
mov esi, 1024
.LEHB8:
call _ZNSt6vectorIS_IfSaIfEESaIS1_EEC1EmRKS1_RKS2_
.LEHE8:
mov rdi, QWORD PTR [rsp+80]
test rdi, rdi
je .L83
call _ZdlPv
.L83:
lea rdx, [rsp+15]
lea rdi, [rsp+144]
mov esi, 1024
.LEHB9:
call _ZNSt6vectorIfSaIfEEC1EmRKS0_
.LEHE9:
lea rcx, [rsp+80]
lea rdx, [rsp+144]
lea rdi, [rsp+112]
mov esi, 1024
.LEHB10:
call _ZNSt6vectorIS_IfSaIfEESaIS1_EEC1EmRKS1_RKS2_
.LEHE10:
mov rdi, QWORD PTR [rsp+144]
test rdi, rdi
je .L84
call _ZdlPv
.L84:
lea rdx, [rsp+112]
lea rsi, [rsp+48]
lea rdi, [rsp+16]
call _Z6mult_1RKSt6vectorIS_IfSaIfEESaIS1_EES5_RS3_
lea rdi, [rsp+112]
call _ZNSt6vectorIS_IfSaIfEESaIS1_EED1Ev
lea rdi, [rsp+48]
call _ZNSt6vectorIS_IfSaIfEESaIS1_EED1Ev
lea rdi, [rsp+16]
call _ZNSt6vectorIS_IfSaIfEESaIS1_EED1Ev
add rsp, 176
.cfi_remember_state
.cfi_def_cfa_offset 32
xor eax, eax
pop rbx
.cfi_def_cfa_offset 24
pop rbp
.cfi_def_cfa_offset 16
pop r12
.cfi_def_cfa_offset 8
ret
.L93:
.cfi_restore_state
mov rdi, QWORD PTR [rsp+144]
mov rbx, rax
test rdi, rdi
je .L127
call _ZdlPv
.L127:
mov rdi, rbx
.LEHB11:
call _Unwind_Resume
.LEHE11:
.L97:
mov rdi, QWORD PTR [rsp+144]
mov rbx, rax
test rdi, rdi
je .L92
call _ZdlPv
.L92:
lea rdi, [rsp+48]
call _ZNSt6vectorIS_IfSaIfEESaIS1_EED1Ev
.L89:
lea rdi, [rsp+16]
call _ZNSt6vectorIS_IfSaIfEESaIS1_EED1Ev
jmp .L127
.L96:
mov rbx, rax
jmp .L92
.L94:
mov rdi, QWORD PTR [rsp+80]
mov rbx, rax
test rdi, rdi
je .L89
call _ZdlPv
jmp .L89
.L95:
mov rbx, rax
.p2align 4,,5
jmp .L89
.cfi_endproc
.LFE698:
.section .gcc_except_table,"a",@progbits
.LLSDA698:
.byte 0xff
.byte 0xff
.byte 0x1
.uleb128 .LLSDACSE698-.LLSDACSB698
.LLSDACSB698:
.uleb128 .LEHB5-.LFB698
.uleb128 .LEHE5-.LEHB5
.uleb128 0
.uleb128 0
.uleb128 .LEHB6-.LFB698
.uleb128 .LEHE6-.LEHB6
.uleb128 .L93-.LFB698
.uleb128 0
.uleb128 .LEHB7-.LFB698
.uleb128 .LEHE7-.LEHB7
.uleb128 .L95-.LFB698
.uleb128 0
.uleb128 .LEHB8-.LFB698
.uleb128 .LEHE8-.LEHB8
.uleb128 .L94-.LFB698
.uleb128 0
.uleb128 .LEHB9-.LFB698
.uleb128 .LEHE9-.LEHB9
.uleb128 .L96-.LFB698
.uleb128 0
.uleb128 .LEHB10-.LFB698
.uleb128 .LEHE10-.LEHB10
.uleb128 .L97-.LFB698
.uleb128 0
.uleb128 .LEHB11-.LFB698
.uleb128 .LEHE11-.LEHB11
.uleb128 0
.uleb128 0
.LLSDACSE698:
.section .text.startup
.size main, .-main
.ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4"
.section .note.GNU-stack,"",@progbits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment