Skip to content

Instantly share code, notes, and snippets.

@jzebedee
Created July 22, 2014 15:19
Show Gist options
  • Save jzebedee/926cd0ad1805939180be to your computer and use it in GitHub Desktop.
Save jzebedee/926cd0ad1805939180be to your computer and use it in GitHub Desktop.
old/new Write64 JIT loop
Text Compare
Produced: 7/22/2014 10:14:10 AM
Mode: All
Left file: C:\Users\\Desktop\old_Write64_JIT_loop.txt
Right file: C:\Users\\Desktop\new_Write64_JIT_loop.txt
1 for (int byteIndex = 0; byteIndex < 8; byteIndex++) <> 1 for (int i = -1; ++i < 8; value >>= 8)
2 00007FFC28EE471D mov dword ptr [rsp+28h],0 2 00007FFC28EE4911 mov dword ptr [rsp+20h],0FFFFFFFFh
3 00007FFC28EE4725 jmp 00007FFC28EE4825 3 00007FFC28EE4919 jmp 00007FFC28EE4972
4 {
5 buf[offset + byteIndex] = (byte)(valueToWrite % 256); 4 buf[offset + i] = (byte)value;
6 00007FFC28EE472A mov ecx,dword ptr [rsp+28h] 5 00007FFC28EE491B mov ecx,dword ptr [rsp+20h]
7 00007FFC28EE472E mov eax,dword ptr [rsp+90h] 6 00007FFC28EE491F mov eax,dword ptr [rsp+80h]
8 00007FFC28EE4735 add eax,ecx 7 00007FFC28EE4926 add eax,ecx
9 00007FFC28EE4737 mov dword ptr [rsp+38h],eax
10 00007FFC28EE473B mov rax,qword ptr [rsp+20h]
11 00007FFC28EE4740 cqo
12 00007FFC28EE4742 and rdx,0FFh
13 00007FFC28EE4749 add rax,rdx
14 00007FFC28EE474C and rax,0FFh
15 00007FFC28EE4752 sub rax,rdx 8 00007FFC28EE4928 movsxd rcx,eax
16 00007FFC28EE4755 mov qword ptr [rsp+40h],rax
17 00007FFC28EE475A movsxd rcx,dword ptr [rsp+38h]
18 00007FFC28EE475F mov rax,qword ptr [rsp+88h] 9 00007FFC28EE492B mov rax,qword ptr [rsp+78h]
19 00007FFC28EE4767 mov rax,qword ptr [rax+8] 10 00007FFC28EE4930 mov rax,qword ptr [rax+8]
20 00007FFC28EE476B mov qword ptr [rsp+48h],rcx 11 00007FFC28EE4934 mov qword ptr [rsp+28h],rcx
21 00007FFC28EE4770 cmp qword ptr [rsp+48h],rax 12 00007FFC28EE4939 cmp qword ptr [rsp+28h],rax
22 00007FFC28EE4775 jae 00007FFC28EE4783 13 00007FFC28EE493E jae 00007FFC28EE494C
23 00007FFC28EE4777 mov rax,qword ptr [rsp+48h] 14 00007FFC28EE4940 mov rax,qword ptr [rsp+28h]
24 00007FFC28EE477C mov qword ptr [rsp+48h],rax 15 00007FFC28EE4945 mov qword ptr [rsp+28h],rax
25 00007FFC28EE4781 jmp 00007FFC28EE4788 16 00007FFC28EE494A jmp 00007FFC28EE4951
26 00007FFC28EE4783 call 00007FFC88A16590 17 00007FFC28EE494C call 00007FFC88A16590
27 00007FFC28EE4788 mov rdx,qword ptr [rsp+88h] 18 00007FFC28EE4951 mov rdx,qword ptr [rsp+78h]
28 00007FFC28EE4790 mov rcx,qword ptr [rsp+48h] 19 00007FFC28EE4956 mov rcx,qword ptr [rsp+28h]
29 00007FFC28EE4795 movzx eax,byte ptr [rsp+40h] 20 00007FFC28EE495B movzx eax,byte ptr [rsp+70h]
30 00007FFC28EE479A mov byte ptr [rdx+rcx+10h],al 21 00007FFC28EE4960 mov byte ptr [rdx+rcx+10h],al
31 valueToWrite -= buf[offset + byteIndex]; 22 for (int i = -1; ++i < 8; value >>= 8)
32 00007FFC28EE479E mov ecx,dword ptr [rsp+28h]
33 00007FFC28EE47A2 mov eax,dword ptr [rsp+90h]
34 00007FFC28EE47A9 add eax,ecx
35 00007FFC28EE47AB movsxd rcx,eax
36 00007FFC28EE47AE mov rax,qword ptr [rsp+88h]
37 00007FFC28EE47B6 mov rax,qword ptr [rax+8]
38 00007FFC28EE47BA mov qword ptr [rsp+50h],rcx
39 00007FFC28EE47BF cmp qword ptr [rsp+50h],rax
40 00007FFC28EE47C4 jae 00007FFC28EE47D2
41 00007FFC28EE47C6 mov rax,qword ptr [rsp+50h] 23 00007FFC28EE4964 mov rax,qword ptr [rsp+70h]
42 00007FFC28EE47CB mov qword ptr [rsp+50h],rax
43 00007FFC28EE47D0 jmp 00007FFC28EE47D7
44 00007FFC28EE47D2 call 00007FFC88A16590
45 00007FFC28EE47D7 mov rcx,qword ptr [rsp+88h]
46 00007FFC28EE47DF mov rax,qword ptr [rsp+50h]
47 00007FFC28EE47E4 movzx rcx,byte ptr [rcx+rax+10h]
48 00007FFC28EE47EA mov rax,qword ptr [rsp+20h]
49 00007FFC28EE47EF sub rax,rcx 24 00007FFC28EE4969 sar rax,8
50 00007FFC28EE47F2 mov qword ptr [rsp+20h],rax 25 00007FFC28EE496D mov qword ptr [rsp+70h],rax
51 valueToWrite /= 256;
52 00007FFC28EE47F7 mov rax,qword ptr [rsp+20h] 26 00007FFC28EE4972 mov eax,dword ptr [rsp+20h]
53 00007FFC28EE47FC cqo 27 00007FFC28EE4976 inc eax
54 00007FFC28EE47FE and rdx,0FFh
55 valueToWrite /= 256;
56 00007FFC28EE4805 add rax,rdx
57 00007FFC28EE4808 sar rax,8
58 00007FFC28EE480C mov qword ptr [rsp+58h],rax 28 00007FFC28EE4978 mov dword ptr [rsp+30h],eax
59 00007FFC28EE4811 mov rax,qword ptr [rsp+58h]
60 00007FFC28EE4816 mov qword ptr [rsp+20h],rax
61 for (int byteIndex = 0; byteIndex < 8; byteIndex++)
62 00007FFC28EE481B mov eax,dword ptr [rsp+28h] 29 00007FFC28EE497C mov eax,dword ptr [rsp+30h]
63 00007FFC28EE481F inc eax
64 00007FFC28EE4821 mov dword ptr [rsp+28h],eax 30 00007FFC28EE4980 mov dword ptr [rsp+20h],eax
65 00007FFC28EE4825 cmp dword ptr [rsp+28h],8 31 00007FFC28EE4984 cmp dword ptr [rsp+30h],8
66 00007FFC28EE482A jl 00007FFC28EE472A 32 00007FFC28EE4989 jl 00007FFC28EE491B
67 }
------------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment