Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- Equals-base.dasm 2017-01-24 10:46:23.778939800 -0800
- +++ Equals-diff.dasm 2017-01-24 10:47:25.091443100 -0800
- @@ -1,133 +1,148 @@
- ; Assembly listing for method System.Collections.Generic.GenericEqualityComparer`1[ByteString][ByteString]:Equals(struct,struct):bool:this
- ; Emitting BLENDED_CODE for X64 CPU with SSE2
- ; optimized code
- ; rsp based frame
- ; partially interruptible
- ; Final local variable assignments
- ;
- ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this
- ; V01 arg1 [V01,T00] ( 4, 6 ) byref -> rdx ld-addr-op
- ; V02 arg2 [V02,T01] ( 3, 6 ) byref -> r8
- ;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref
- ; V04 OutArgs [V04 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
- ;
- ; Lcl frame size = 40
- G_M8165_IG01:
- sub rsp, 40
- G_M8165_IG02:
- mov rcx, rdx
- mov rdx, r8
- call ByteString:Equals(struct):bool:this
- movzx rax, al
- G_M8165_IG03:
- add rsp, 40
- ret
- ; Total bytes of code 23, prolog size 4 for method System.Collections.Generic.GenericEqualityComparer`1[ByteString][ByteString]:Equals(struct,struct):bool:this
- ; ============================================================
- ; Assembly listing for method ByteString:Equals(struct):bool:this
- ; Emitting BLENDED_CODE for X64 CPU with SSE2
- ; optimized code
- ; rsp based frame
- ; fully interruptible
- ; Final local variable assignments
- ;
- -; V00 this [V00,T06] ( 8, 16 ) byref -> rcx this
- -; V01 arg1 [V01,T00] ( 8, 22 ) byref -> rdx ld-addr-op
- -; V02 loc0 [V02,T05] ( 6, 20.5) int -> r8
- -; V03 tmp0 [V03,T01] ( 3, 24 ) ref -> rax
- -; V04 tmp1 [V04,T03] ( 3, 24 ) int -> r9
- -; V05 tmp2 [V05,T02] ( 3, 24 ) ref -> r9
- -; V06 tmp3 [V06,T04] ( 3, 24 ) int -> r10
- +; V00 this [V00,T08] ( 10, 14 ) byref -> rcx this
- +; V01 arg1 [V01,T05] ( 15, 44 ) byref -> rdx ld-addr-op
- +; V02 loc0 [V02,T04] ( 16, 57 ) int -> r9
- +; V03 tmp0 [V03,T00] ( 15, 120 ) ref -> rax
- +; V04 tmp1 [V04,T02] ( 15, 120 ) int -> rsi
- +; V05 tmp2 [V05,T01] ( 15, 120 ) ref -> rsi
- +; V06 tmp3 [V06,T03] ( 15, 120 ) int -> rdi
- ; V07 OutArgs [V07 ] ( 1, 1 ) lclBlk (32) [rsp+0x00]
- +; V08 cse0 [V08,T09] ( 9, 13.5) int -> r8
- +; V09 cse1 [V09,T06] ( 8, 21.5) int -> rcx
- +; V10 cse2 [V10,T07] ( 7, 17.5) int -> rdx
- +; V11 cse3 [V11,T10] ( 6, 13.5) ref -> r10
- +; V12 cse4 [V12,T11] ( 5, 9.5) ref -> r11
- ;
- ; Lcl frame size = 40
- G_M3809_IG01:
- + push rdi
- + push rsi
- sub rsp, 40
- G_M3809_IG02:
- - mov eax, dword ptr [rcx+12]
- - cmp eax, dword ptr [rdx+12]
- + mov r8d, dword ptr [rcx+12]
- + cmp r8d, dword ptr [rdx+12]
- je SHORT G_M3809_IG04
- xor eax, eax
- G_M3809_IG03:
- add rsp, 40
- + pop rsi
- + pop rdi
- ret
- G_M3809_IG04:
- - xor r8d, r8d
- - cmp dword ptr [rcx+12], 0
- + xor r9d, r9d
- + test r8d, r8d
- jle SHORT G_M3809_IG08
- + mov r10, gword ptr [rcx]
- + mov ecx, dword ptr [rcx+8]
- + mov r11, gword ptr [rdx]
- + mov edx, dword ptr [rdx+8]
- G_M3809_IG05:
- - mov rax, gword ptr [rcx]
- - mov r9d, r8d
- - add r9d, dword ptr [rcx+8]
- - cmp r9d, dword ptr [rax+8]
- + mov rax, r10
- + lea esi, [rcx+r9]
- + cmp esi, dword ptr [rax+8]
- jae SHORT G_M3809_IG10
- - movsxd r9, r9d
- - movzx rax, byte ptr [rax+r9+16]
- - mov r9, gword ptr [rdx]
- - mov r10d, r8d
- - add r10d, dword ptr [rdx+8]
- - cmp r10d, dword ptr [r9+8]
- + movsxd rsi, esi
- + movzx rax, byte ptr [rax+rsi+16]
- + mov rsi, r11
- + lea edi, [rdx+r9]
- + cmp edi, dword ptr [rsi+8]
- jae SHORT G_M3809_IG10
- - movsxd r10, r10d
- - cmp al, byte ptr [r9+r10+16]
- + movsxd rdi, edi
- + cmp al, byte ptr [rsi+rdi+16]
- je SHORT G_M3809_IG07
- xor eax, eax
- G_M3809_IG06:
- add rsp, 40
- + pop rsi
- + pop rdi
- ret
- G_M3809_IG07:
- - inc r8d
- - cmp r8d, dword ptr [rcx+12]
- + inc r9d
- + cmp r9d, r8d
- jl SHORT G_M3809_IG05
- G_M3809_IG08:
- mov eax, 1
- G_M3809_IG09:
- add rsp, 40
- + pop rsi
- + pop rdi
- ret
- G_M3809_IG10:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- -; Total bytes of code 111, prolog size 4 for method ByteString:Equals(struct):bool:this
- +; Total bytes of code 121, prolog size 6 for method ByteString:Equals(struct):bool:this
- ; ============================================================
- A 30.297
- T 30.151
- C 19.798
- G 19.755
- AA 9.177
- TA 9.133
- AT 9.131
- TT 9.091
- CA 6.002
- AC 6.001
- AG 5.987
- GA 5.984
- CT 5.971
- TC 5.971
- GT 5.957
- TG 5.956
- CC 3.917
- GC 3.910
- CG 3.909
- GG 3.903
- 147166 GGT
- 44658 GGTA
- 4736 GGTATT
- 89 GGTATTTTAATT
- 89 GGTATTTTAATTTATAGT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement