Untitled Diff

Created Diff never expires
165 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
260 lines
189 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
286 lines
## .NET 6.0.0 (6.0.21.37719), X64 RyuJIT
## .NET 6.0.0 (6.0.21.37719), X64 RyuJIT
```assembly
```assembly
; System.Globalization.Tests.StringEquality.Compare_Same_Upper()
; System.Globalization.Tests.StringEquality.Compare_Same_Upper()
push rsi
push rsi
sub rsp,20
sub rsp,20
mov rsi,rcx
mov rsi,rcx
mov rcx,[rsi+30]
mov rcx,[rsi+30]
mov rax,[rcx]
mov rax,[rcx]
mov rax,[rax+48]
mov rax,[rax+48]
call qword ptr [rax+30]
call qword ptr [rax+30]
mov rcx,rax
mov rcx,rax
mov rdx,[rsi+8]
mov rdx,[rsi+8]
mov r8,[rsi+18]
mov r8,[rsi+18]
mov r9d,[rsi+38]
mov r9d,[rsi+38]
cmp [rcx],ecx
cmp [rcx],ecx
add rsp,20
add rsp,20
pop rsi
pop rsi
jmp near ptr System.Globalization.CompareInfo.Compare(System.String, System.String, System.Globalization.CompareOptions)
jmp near ptr System.Globalization.CompareInfo.Compare(System.String, System.String, System.Globalization.CompareOptions)
; Total bytes of code 49
; Total bytes of code 49
```
```
```assembly
```assembly
; System.Globalization.CompareInfo.Compare(System.String, System.String, System.Globalization.CompareOptions)
; System.Globalization.CompareInfo.Compare(System.String, System.String, System.Globalization.CompareOptions)
sub rsp,48
sub rsp,48
xor eax,eax
xor eax,eax
mov [rsp+28],rax
mov [rsp+28],rax
vxorps xmm4,xmm4,xmm4
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov [rsp+40],rax
mov [rsp+40],rax
test rdx,rdx
test rdx,rdx
jne short M01_L02
je short M01_L02
test r8,r8
je short M01_L00
mov eax,0FFFFFFFF
jmp short M01_L01
M01_L00:
xor eax,eax
M01_L01:
jmp short M01_L04
M01_L02:
test r8,r8
test r8,r8
jne short M01_L03
je short M01_L05
mov eax,1
jmp short M01_L04
M01_L03:
lea rax,[rdx+0C]
lea rax,[rdx+0C]
mov edx,[rdx+8]
mov edx,[rdx+8]
lea r10,[r8+0C]
lea r10,[r8+0C]
mov r8d,[r8+8]
mov r8d,[r8+8]
mov [rsp+38],rax
mov [rsp+38],rax
mov [rsp+40],edx
mov [rsp+40],edx
mov [rsp+28],r10
mov [rsp+28],r10
mov [rsp+30],r8d
mov [rsp+30],r8d
lea rdx,[rsp+38]
lea rdx,[rsp+38]
lea r8,[rsp+28]
lea r8,[rsp+28]
call System.Globalization.CompareInfo.Compare(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
call System.Globalization.CompareInfo.Compare(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
nop
nop
add rsp,48
add rsp,48
ret
ret
M01_L04:
M01_L00:
test r9d,0DFFFFFE0
test r9d,0DFFFFFE0
je short M01_L05
je short M01_L01
cmp r9d,40000000
cmp r9d,40000000
je short M01_L05
je short M01_L01
cmp r9d,10000000
cmp r9d,10000000
jne short M01_L06
je short M01_L01
M01_L05:
add rsp,48
ret
M01_L06:
mov ecx,r9d
mov ecx,r9d
call System.Globalization.CompareInfo.ThrowCompareOptionsCheckFailed(System.Globalization.CompareOptions)
call System.Globalization.CompareInfo.ThrowCompareOptionsCheckFailed(System.Globalization.CompareOptions)
int 3
int 3
M01_L01:
add rsp,48
ret
M01_L02:
test r8,r8
je short M01_L03
mov eax,0FFFFFFFF
jmp short M01_L04
M01_L03:
xor eax,eax
M01_L04:
jmp short M01_L00
M01_L05:
mov eax,1
jmp short M01_L00
; Total bytes of code 155
; Total bytes of code 155
```
```
```assembly
```assembly
; System.Globalization.CompareInfo.Compare(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
; System.Globalization.CompareInfo.Compare(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
sub rsp,48
xor eax,eax
mov [rsp+28],rax
vxorps xmm4,xmm4,xmm4
vmovdqa xmmword ptr [rsp+30],xmm4
mov [rsp+40],rax
mov rax,[r8]
mov r10d,[r8+8]
mov r11,[rdx]
mov edx,[rdx+8]
cmp edx,r10d
je short M02_L01
M02_L00:
test r9d,0DFFFFFE0
jne short M02_L05
mov [rsp+38],r11
mov [rsp+40],edx
mov [rsp+28],rax
mov [rsp+30],r10d
lea rdx,[rsp+38]
lea r8,[rsp+28]
call System.Globalization.CompareInfo.IcuCompareString(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
jmp short M02_L02
M02_L01:
cmp r11,rax
sete r8b
movzx r8d,r8b
test r8d,r8d
je short M02_L00
jmp short M02_L03
M02_L02:
add rsp,48
ret
M02_L03:
test r9d,0DFFFFFE0
je short M02_L04
cmp r9d,40000000
je short M02_L04
cmp r9d,10000000
jne short M02_L07
M02_L04:
xor eax,eax
add rsp,48
ret
M02_L05:
cmp r9d,40000000
jne short M02_L06
mov rcx,r11
mov r8,rax
mov r9d,r10d
call System.SpanHelpers.SequenceCompareTo(Char ByRef, Int32, Char ByRef, Int32)
jmp short M02_L02
M02_L06:
cmp r9d,10000000
jne short M02_L07
mov rcx,r11
mov r8,rax
mov r9d,r10d
call System.Globalization.Ordinal.CompareStringIgnoreCase(Char ByRef, Int32, Char ByRef, Int32)
jmp short M02_L02
M02_L07:
mov ecx,r9d
call System.Globalization.CompareInfo.ThrowCompareOptionsCheckFailed(System.Globalization.CompareOptions)
int 3
; Total bytes of code 205
```
```assembly
; System.Globalization.CompareInfo.IcuCompareString(System.ReadOnlySpan`1<Char>, System.ReadOnlySpan`1<Char>, System.Globalization.CompareOptions)
push rbp
push rbp
push r15
push r15
push r14
push r14
push r13
push r13
push r12
push r12
push rdi
push rdi
push rsi
push rsi
push rbx
push rbx
sub rsp,0A8
sub rsp,0B8
lea rbp,[rsp+0E0]
lea rbp,[rsp+0F0]
xor ebx,ebx
mov [rbp+0FFC0],rbx
mov [rbp+0FFB8],rbx
mov r14,rcx
mov rsi,rdx
mov rdi,r8
mov ebx,r9d
lea rcx,[rbp+0FF60]
mov rdx,r10
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov r15,rax
mov rcx,rsp
mov [rbp+0FF80],rcx
mov rcx,rbp
mov [rbp+0FF90],rcx
mov r8,[rdi]
mov r9d,[rdi+8]
mov rcx,[rsi]
mov edx,[rsi+8]
mov [rbp+0FFB4],edx
cmp edx,r9d
jne short M02_L01
cmp rcx,r8
sete al
movzx eax,al
test eax,eax
je short M02_L01
test ebx,0DFFFFFE0
je short M02_L00
cmp ebx,40000000
je short M02_L00
cmp ebx,10000000
jne near ptr M02_L07
M02_L00:
xor eax,eax
xor eax,eax
jmp near ptr M02_L06
mov [rbp+0FFC0],rax
M02_L01:
mov [rbp+0FFB8],rax
test ebx,0DFFFFFE0
mov rax,[rdx]
jne near ptr M02_L04
mov [rbp+0FFC0],rax
mov [rbp+0FFC0],rcx
mov r10,[r8]
mov [rbp+0FFA8],rcx
mov [rbp+0FFB8],r10
mov [rbp+0FFB8],r8
mov rcx,[rcx+20]
mov [rbp+0FFA0],r8
mov r11d,[rdx+8]
mov rax,[r14+20]
mov edx,[r8+8]
mov [rsp+20],r9d
mov [rsp+20],edx
mov [rsp+28],ebx
mov [rsp+28],r9d
mov rcx,rax
mov [rbp+0FFAC],rcx
mov rdx,[rbp+0FFA8]
mov rdx,rax
mov [rbp+0FFA4],rdx
mov r8d,r11d
mov [rbp+0FFB4],r8d
mov r9,r10
mov [rbp+0FF9C],r9
lea rcx,[rbp+0FF40]
call qword ptr [7FFC2A61F580]
mov rax,[7FFC2A619C10]
mov rcx,[rbp+0FFAC]
mov rdx,[rbp+0FFA4]
mov r8d,[rbp+0FFB4]
mov r8d,[rbp+0FFB4]
mov r9,[rbp+0FFA0]
mov r9,[rbp+0FF9C]
mov rax,offset MD_Interop+Globalization.CompareString(IntPtr, Char*, Int32, Char*, Int32, System.Globalization.CompareOptions)
call qword ptr [rax]
mov [rbp+0FF70],rax
mov esi,eax
lea rax,[M02_L02]
lea rcx,[rbp+0FF40]
mov [rbp+0FF88],rax
call qword ptr [7FFC2A61F588]
lea rax,[rbp+0FF60]
mov eax,esi
mov [r15+10],rax
add rsp,0B8
mov byte ptr [r15+0C],0
call qword ptr [7FFBCB5ACD60]
M02_L02:
mov byte ptr [r15+0C],1
cmp dword ptr [7FFBCB5AA5CC],0
je short M02_L03
call qword ptr [7FFBCB5AC3D8]
M02_L03:
mov rcx,[rbp+0FF68]
mov [r15+10],rcx
jmp short M02_L06
M02_L04:
cmp ebx,40000000
jne short M02_L05
mov edx,[rbp+0FFB4]
call System.SpanHelpers.SequenceCompareTo(Char ByRef, Int32, Char ByRef, Int32)
jmp short M02_L06
M02_L05:
cmp ebx,10000000
jne short M02_L07
mov edx,[rbp+0FFB4]
call System.Globalization.Ordinal.CompareStringIgnoreCase(Char ByRef, Int32, Char ByRef, Int32)
M02_L06:
nop
add rsp,0A8
pop rbx
pop rbx
pop rsi
pop rsi
pop rdi
pop rdi
pop r12
pop r12
pop r13
pop r13
pop r14
pop r14
pop r15
pop r15
pop rbp
pop rbp
ret
ret
M02_L07:
; Total bytes of code 172
mov ecx,ebx
call System.Globalization.CompareInfo.ThrowCompareOptionsCheckFailed(System.Globalization.CompareOptions)
int 3
; Total bytes of code 352
```
```
```assembly
```assembly
; System.Globalization.Ordinal.CompareStringIgnoreCase(Char ByRef, Int32, Char ByRef, Int32)
; System.Globalization.Ordinal.CompareStringIgnoreCase(Char ByRef, Int32, Char ByRef, Int32)
push rdi
push rdi
push rsi
push rsi
push rbx
push rbx
cmp edx,r9d
cmp edx,r9d
jle short M03_L00
jg short M04_L01
mov r10d,r9d
jmp short M03_L01
M03_L00:
mov r10d,edx
mov r10d,edx
M03_L01:
M04_L00:
mov r11d,r10d
mov r11d,r10d
jmp short M03_L04
jmp short M04_L07
M03_L02:
M04_L01:
cmp esi,edi
mov r10d,r9d
je short M03_L03
jmp short M04_L00
mov eax,esi
M04_L02:
or eax,20
cmp eax,esi
mov ebx,edi
je short M04_L03
mov edi,eax
or edi,20
mov ebx,esi
or ebx,20
or ebx,20
cmp eax,ebx
cmp edi,ebx
jne short M03_L06
jne short M04_L04
add eax,0FFFFFF9F
add edi,0FFFFFF9F
cmp eax,19
cmp edi,19
ja short M03_L06
ja short M04_L04
M03_L03:
M04_L03:
dec r10d
dec r10d
add rcx,2
add rcx,2
add r8,2
add r8,2
M03_L04:
jmp short M04_L07
M04_L04:
mov r10d,eax
mov edx,esi
add eax,0FFFFFF9F
cmp eax,19
ja short M04_L05
add r10d,0FFFFFFE0
M04_L05:
add esi,0FFFFFF9F
cmp esi,19
ja short M04_L06
add edx,0FFFFFFE0
M04_L06:
mov eax,r10d
Text moved with changes from lines 244-249 (96.2% similarity)
sub eax,edx
pop rbx
pop rsi
pop rdi
ret
M04_L07:
test r10d,r10d
test r10d,r10d
je short M03_L05
je short M04_L08
movzx esi,word ptr [rcx]
movzx eax,word ptr [rcx]
cmp eax,7F
jg short M04_L08
movzx esi,word ptr [r8]
cmp esi,7F
cmp esi,7F
jg short M03_L05
jle short M04_L02
movzx edi,word ptr [r8]
M04_L08:
cmp edi,7F
jle short M03_L02
M03_L05:
test r10d,r10d
test r10d,r10d
jne short M03_L09
jne short M04_L09
mov eax,edx
mov eax,edx
sub eax,r9d
sub eax,r9d
pop rbx
pop rbx
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
M03_L06:
M04_L09:
mov eax,esi
mov r10d,edi
add esi,0FFFFFF9F
cmp esi,19
ja short M03_L07
add eax,0FFFFFFE0
M03_L07:
add edi,0FFFFFF9F
cmp edi,19
ja short M03_L08
add r10d,0FFFFFFE0
M03_L08:
Text moved with changes to lines 242-247 (96.2% similarity)
sub eax,r10d
pop rbx
pop rsi
pop rdi
ret
M03_L09:
sub r11d,r10d
sub r11d,r10d
sub r9d,r11d
sub r9d,r11d
sub edx,r11d
sub edx,r11d
pop rbx
pop rbx
pop rsi
pop rsi
pop rdi
pop rdi
jmp near ptr System.Globalization.Ordinal.CompareStringIgnoreCaseNonAscii(Char ByRef, Int32, Char ByRef, Int32)
jmp near ptr System.Globalization.Ordinal.CompareStringIgnoreCaseNonAscii(Char ByRef, Int32, Char ByRef, Int32)
; Total bytes of code 146
; Total bytes of code 150
```
```assembly
; Internal.Runtime.CompilerServices.Unsafe.IsNullRef[[System.__Canon, System.Private.CoreLib]](System.__Canon ByRef)
test rdx,rdx
sete al
movzx eax,al
ret
; Total bytes of code 10
```
```
**Method was not JITted yet.**
**Method was not JITted yet.**
System.Globalization.CompareInfo.ThrowCompareOptionsCheckFailed(System.Globalization.CompareOptions)
System.Globalization.CompareInfo.ThrowCompareOptionsCheckFailed(System.Globalization.CompareOptions)