Skip to content

Instantly share code, notes, and snippets.

@alexandrnikitin
Created April 28, 2017 08:05
Show Gist options
  • Save alexandrnikitin/c2eaf1086d32c086406849a62f66412d to your computer and use it in GitHub Desktop.
Save alexandrnikitin/c2eaf1086d32c086406849a62f66412d to your computer and use it in GitHub Desktop.
0:006> !U /d 00007fff0d5e04d0
Normal JIT generated code
Adform.AdServing.AhoCorasickTree.Benchmarks.ReadingString.TraversalUrolling()
Begin 00007fff0d5e04d0, size 126
>>> 00007fff`0d5e04d0 4883ec28 sub rsp,28h
00007fff`0d5e04d4 33c0 xor eax,eax
00007fff`0d5e04d6 33d2 xor edx,edx
00007fff`0d5e04d8 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e04e2 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e04e5 83790800 cmp dword ptr [rcx+8],0
00007fff`0d5e04e9 0f8efc000000 jle 00007fff`0d5e05eb
00007fff`0d5e04ef 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e04f9 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e04fc 8b4908 mov ecx,dword ptr [rcx+8]
00007fff`0d5e04ff 3bd1 cmp edx,ecx
00007fff`0d5e0501 0f83e9000000 jae 00007fff`0d5e05f0
00007fff`0d5e0507 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e0511 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e0514 4c63c2 movsxd r8,edx
00007fff`0d5e0517 420fb74c410c movzx ecx,word ptr [rcx+r8*2+0Ch]
00007fff`0d5e051d 81e1ffffffff and ecx,0FFFFFFFFh
00007fff`0d5e0523 4803c1 add rax,rcx
00007fff`0d5e0526 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e0530 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e0533 8b4908 mov ecx,dword ptr [rcx+8]
00007fff`0d5e0536 448d4201 lea r8d,[rdx+1]
00007fff`0d5e053a 443bc1 cmp r8d,ecx
00007fff`0d5e053d 0f83ad000000 jae 00007fff`0d5e05f0
00007fff`0d5e0543 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e054d 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e0550 4d63c0 movsxd r8,r8d
00007fff`0d5e0553 420fb74c410c movzx ecx,word ptr [rcx+r8*2+0Ch]
00007fff`0d5e0559 81e1ffffffff and ecx,0FFFFFFFFh
00007fff`0d5e055f 4803c1 add rax,rcx
00007fff`0d5e0562 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e056c 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e056f 8b4908 mov ecx,dword ptr [rcx+8]
00007fff`0d5e0572 448d4202 lea r8d,[rdx+2]
00007fff`0d5e0576 443bc1 cmp r8d,ecx
00007fff`0d5e0579 7375 jae 00007fff`0d5e05f0
00007fff`0d5e057b 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e0585 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e0588 4d63c0 movsxd r8,r8d
00007fff`0d5e058b 420fb74c410c movzx ecx,word ptr [rcx+r8*2+0Ch]
00007fff`0d5e0591 81e1ffffffff and ecx,0FFFFFFFFh
00007fff`0d5e0597 4803c1 add rax,rcx
00007fff`0d5e059a 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e05a4 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e05a7 8b4908 mov ecx,dword ptr [rcx+8]
00007fff`0d5e05aa 448d4203 lea r8d,[rdx+3]
00007fff`0d5e05ae 443bc1 cmp r8d,ecx
00007fff`0d5e05b1 733d jae 00007fff`0d5e05f0
00007fff`0d5e05b3 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e05bd 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e05c0 4d63c0 movsxd r8,r8d
00007fff`0d5e05c3 420fb74c410c movzx ecx,word ptr [rcx+r8*2+0Ch]
00007fff`0d5e05c9 81e1ffffffff and ecx,0FFFFFFFFh
00007fff`0d5e05cf 4803c1 add rax,rcx
00007fff`0d5e05d2 83c204 add edx,4
00007fff`0d5e05d5 48b978353a4fde010000 mov rcx,1DE4F3A3578h
00007fff`0d5e05df 488b09 mov rcx,qword ptr [rcx]
00007fff`0d5e05e2 395108 cmp dword ptr [rcx+8],edx
00007fff`0d5e05e5 0f8f04ffffff jg 00007fff`0d5e04ef
00007fff`0d5e05eb 4883c428 add rsp,28h
00007fff`0d5e05ef c3 ret
00007fff`0d5e05f0 e87b71aa5f call clr!JIT_RngChkFail (00007fff`6d087770)
00007fff`0d5e05f5 cc int 3
public long TraversalUrolling()
{
long sum = 0;
for (var i = 0; i < userAgent.Length; i = i + 4)
{
sum += userAgent[i];
sum += userAgent[i+1];
sum += userAgent[i+2];
sum += userAgent[i+3];
}
return sum;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment