1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
#include <cstdio>
#include <vector>
int main(int ac, char** av)
{
for(auto& s : std::vector<char*>(av, av+ac))
puts(s);
}
main:
.LFB766:
pushq %r12
.seh_pushreg %r12
pushq %rbp
.seh_pushreg %rbp
pushq %rdi
.seh_pushreg %rdi
pushq %rsi
.seh_pushreg %rsi
pushq %rbx
.seh_pushreg %rbx
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
movl %ecx, %ebx
movq %rdx, %r12
call __main
movslq %ebx, %rbx
salq $3, %rbx
movq %rbx, %rbp
sarq $3, %rbp
testq %rbp, %rbp
je .L10
movabsq $2305843009213693951, %rax
cmpq %rax, %rbp
jbe .L3
.LEHB0:
call _ZSt17__throw_bad_allocv
.L3:
movq %rbx, %rcx
call _Znwm
.LEHE0:
movq %rax, %rdi
jmp .L2
.L10:
movl $0, %edi
.L2:
leaq (%rdi,%rbx), %rsi
testq %rbp, %rbp
je .L4
movq %rbx, %r8
movq %r12, %rdx
movq %rdi, %rcx
call memcpy
.L4:
cmpq %rdi, %rsi
je .L5
movq %rdi, %rbx
.L6:
movq (%rbx), %rcx
.LEHB1:
call puts
.LEHE1:
addq $8, %rbx
cmpq %rbx, %rsi
jne .L6
.L5:
testq %rdi, %rdi
je .L12
movq %rdi, %rcx
call _ZdlPv
jmp .L12
.L11:
movq %rax, %rbx
testq %rdi, %rdi
je .L9
movq %rdi, %rcx
call _ZdlPv
.L9:
movq %rbx, %rcx
.LEHB2:
call _Unwind_Resume
.LEHE2:
.L12:
movl $0, %eax
addq $32, %rsp
popq %rbx
popq %rsi
popq %rdi
popq %rbp
popq %r12
ret
| |