Skip to content

Instantly share code, notes, and snippets.

@retep998
Last active August 29, 2015 14:03
Show Gist options
  • Save retep998/a60a9325fd293a6e32e4 to your computer and use it in GitHub Desktop.
Save retep998/a60a9325fd293a6e32e4 to your computer and use it in GitHub Desktop.
assembly comparison
--- a:\files\coding\nolifestory\src\nxbench\nxbench.cpp ------------------------
nl::bench::recurse_sub:
00AD12E0 push ebp
00AD12E1 mov ebp,esp
00AD12E3 and esp,0FFFFFFF8h
00AD12E6 sub esp,14h
00AD12E9 mov eax,dword ptr [ebp+8]
00AD12EC push ebx
00AD12ED push esi
00AD12EE push edi
00AD12EF mov ebx,dword ptr [eax]
00AD12F1 mov edi,1
00AD12F6 mov edx,dword ptr [eax+4]
00AD12F9 mov dword ptr [esp+14h],ecx
00AD12FD mov dword ptr [esp+10h],edx
00AD1301 test ebx,ebx
00AD1303 jne 00AD1309
00AD1305 xor esi,esi
00AD1307 jmp 00AD1315
00AD1309 mov eax,dword ptr [ebx+4]
00AD130C lea ecx,[eax+eax*4]
00AD130F mov eax,dword ptr [edx+4]
00AD1312 lea esi,[eax+ecx*4]
00AD1315 test ebx,ebx
00AD1317 je 00AD132F
00AD1319 movzx eax,word ptr [ebx+8]
00AD131D add eax,dword ptr [ebx+4]
00AD1320 lea ecx,[eax+eax*4]
00AD1323 mov eax,dword ptr [ebp+8]
00AD1326 mov eax,dword ptr [eax+4]
00AD1329 mov eax,dword ptr [eax+4]
00AD132C lea ebx,[eax+ecx*4]
00AD132F cmp esi,ebx
00AD1331 je 00AD1356
00AD1333 mov ecx,dword ptr [esp+14h]
00AD1337 lea eax,[esp+18h]
00AD133B push eax
00AD133C mov dword ptr [esp+1Ch],esi
00AD1340 mov dword ptr [esp+20h],edx
00AD1344 call 00AD12E0
00AD1349 mov edx,dword ptr [esp+10h]
00AD134D add esi,14h
00AD1350 add edi,eax
00AD1352 cmp esi,ebx
00AD1354 jne 00AD1333
00AD1356 mov eax,edi
00AD1358 pop edi
00AD1359 pop esi
00AD135A pop ebx
00AD135B mov esp,ebp
00AD135D pop ebp
00AD135E ret 4
--- No source file -------------------------------------------------------------
00402530 push ebp
00402531 mov ebp,esp
00402533 push ebx
00402534 push edi
00402535 push esi
00402536 and esp,0FFFFFFF8h
0040253C sub esp,18h
0040253F mov dword ptr [esp+4],ecx
00402543 mov ecx,dword ptr [edx]
00402545 mov bx,word ptr [ecx+8]
00402549 mov eax,1
0040254E test bx,bx
00402551 je fn"fn"(2018)+5Ah (040258Ah)
00402553 mov esi,dword ptr [edx+4]
00402556 imul edi,dword ptr [ecx+4],14h
0040255A add edi,dword ptr [esi+1Ch]
0040255D mov eax,1
00402562 nop
00402563 nop
00402564 nop
00402565 nop
00402566 nop
00402567 nop
00402568 nop
00402569 nop
0040256A nop
0040256B nop
0040256C nop
0040256D nop
0040256E nop
0040256F nop
00402570 mov dword ptr [esp+8],edi
00402574 add edi,14h
00402577 mov dword ptr [esp+0Ch],esi
0040257B mov ecx,eax
0040257D lea edx,[esp+8]
00402581 call fn"fn"(2018) (0402530h)
00402586 dec bx
00402588 jne fn"fn"(2018)+40h (0402570h)
0040258A add eax,dword ptr [esp+4]
0040258E lea esp,[ebp-0Ch]
00402591 pop esi
00402592 pop edi
00402593 pop ebx
00402594 pop ebp
00402595 ret
004016E0 cmp esp,dword ptr fs:[14h]
004016E7 ja 004016F9
004016E9 push 4
004016EE push 14h
004016F3 call 00402ED4
004016F8 ret
004016F9 push ebp
004016FA push ebx
004016FB push edi
004016FC push esi
004016FD push eax
004016FE mov esi,edx
00401700 mov edi,1
00401705 test si,si
00401708 je 00401738
0040170A mov ebx,dword ptr [esp+18h]
0040170E mov eax,dword ptr [ebx+1Ch]
00401711 imul ecx,ecx,14h
00401714 lea ebp,[eax+ecx+8]
00401718 mov edi,1
0040171D nop dword ptr [eax]
00401720 mov ecx,dword ptr [ebp-4]
00401723 movzx edx,word ptr [ebp]
00401727 mov dword ptr [esp],ebx
0040172A call 004016E0
0040172F add edi,eax
00401731 add ebp,14h
00401734 dec si
00401736 jne 00401720
00401738 mov eax,edi
0040173A add esp,4
0040173D pop esi
0040173E pop edi
0040173F pop ebx
00401740 pop ebp
00401741 ret
0000000000401C60 push r15
0000000000401C62 push r14
0000000000401C64 push rsi
0000000000401C65 push rdi
0000000000401C66 push rbx
0000000000401C67 sub rsp,30h
0000000000401C6B mov rax,qword ptr [rcx]
0000000000401C6E mov bx,word ptr [rax+8]
0000000000401C72 mov eax,dword ptr [rax+4]
0000000000401C75 test bx,bx
0000000000401C78 mov esi,1
0000000000401C7D je 0000000000401CBD
0000000000401C7F mov r15,qword ptr [rcx+8]
0000000000401C83 lea rdi,[rax+rax*4]
0000000000401C87 shl rdi,2
0000000000401C8B add rdi,qword ptr [r15+38h]
0000000000401C8F je 0000000000401CBD
0000000000401C91 mov esi,1
0000000000401C96 lea r14,[rsp+20h]
0000000000401C9B nop dword ptr [rax+rax]
0000000000401CA0 mov qword ptr [rsp+20h],rdi
0000000000401CA5 add rdi,14h
0000000000401CA9 mov qword ptr [rsp+28h],r15
0000000000401CAE mov rcx,r14
0000000000401CB1 call 0000000000401C60
0000000000401CB6 add esi,eax
0000000000401CB8 dec bx
0000000000401CBB jne 0000000000401CA0
0000000000401CBD mov eax,esi
0000000000401CBF add rsp,30h
0000000000401CC3 pop rbx
0000000000401CC4 pop rdi
0000000000401CC5 pop rsi
0000000000401CC6 pop r14
0000000000401CC8 pop r15
0000000000401CCA ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment