Created
July 22, 2014 15:19
-
-
Save jzebedee/926cd0ad1805939180be to your computer and use it in GitHub Desktop.
old/new Write64 JIT loop
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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