vs 설치하느라 늦었다. 시발 이번주에 vs만 몇번을 설치하냐.


my_memcpy_byte_only


  0000000000000000: mov         qword ptr [rsp+8],rbx

  0000000000000005: push        rdi

  0000000000000006: sub         rsp,20h

  000000000000000A: mov         rdi,r8

  000000000000000D: mov         rbx,rcx

  0000000000000010: test        r8,r8

  0000000000000013: je          0000000000000029

  0000000000000015: call        memcpy

  000000000000001A: lea         rax,[rbx+rdi]

  000000000000001E: mov         rbx,qword ptr [rsp+30h]

  0000000000000023: add         rsp,20h

  0000000000000027: pop         rdi

  0000000000000028: ret

  0000000000000029: mov         rax,rcx

  000000000000002C: mov         rbx,qword ptr [rsp+30h]

  0000000000000031: add         rsp,20h

  0000000000000035: pop         rdi

  0000000000000036: ret



my_memcpy_unaligned


  0000000000000000: mov         qword ptr [rsp+8],rbx

  0000000000000005: mov         qword ptr [rsp+10h],rbp

  000000000000000A: mov         qword ptr [rsp+18h],rsi

  000000000000000F: push        rdi

  0000000000000010: sub         rsp,20h

  0000000000000014: mov         rsi,r8

  0000000000000017: mov         rbx,r8

  000000000000001A: shr         rsi,3

  000000000000001E: mov         rbp,rdx

  0000000000000021: mov         rdi,rcx

  0000000000000024: test        rsi,rsi

  0000000000000027: je          0000000000000035

  0000000000000029: mov         r8,rsi

  000000000000002C: shl         r8,3

  0000000000000030: call        memcpy

  0000000000000035: lea         rcx,[rsi*8]

  000000000000003D: lea         rax,[rcx+rbp]

  0000000000000041: lea         rdx,[rcx+rdi]

  0000000000000045: sub         rbx,rcx

  0000000000000048: je          0000000000000060

  000000000000004A: sub         rdx,rax

  000000000000004D: nop         dword ptr [rax]

  0000000000000050: movzx       ecx,byte ptr [rax]

  0000000000000053: mov         byte ptr [rdx+rax],cl

  0000000000000056: lea         rax,[rax+1]

  000000000000005A: sub         rbx,1

  000000000000005E: jne         0000000000000050

  0000000000000060: mov         rbx,qword ptr [rsp+30h]

  0000000000000065: mov         rax,rdi

  0000000000000068: mov         rbp,qword ptr [rsp+38h]

  000000000000006D: mov         rsi,qword ptr [rsp+40h]

  0000000000000072: add         rsp,20h

  0000000000000076: pop         rdi

  0000000000000077: ret


내가 x86 어셈블리를 잘 몰라서 unaligned가 memcpy를 호출하는데 왜 다르게 나오는지는 아직 잘 모르겠다.


근데 어쨌든 지금 최적화 옵션 제외하로 벼라별 옵션을 다 껐다켰다 하는데 memcpy 호출하는거 죽어라 안없어짐. 시발 이거 저번에도 보여줬고만 뭘 자꾸 어셈블리를 까보래.


글고 지금 어셈블리 까보면서 느낀건데 너 전처리기에 NDEBUG 정의는 했냐? 저거 정의 뺴고 했더니 니가 했던거랑 비슷하게 나오던데?






잘 봐둬. 코세 이 새끼가 뭐라고 말 바꾸고 도망가는지.