Diff
checker
文本
文本
图像
文档
Excel
文件夹
Legal
Enterprise
桌面版
定价
登录
下载 Diffchecker 桌面版
比较文本
查找两个文本文件之间的差异
工具
历史
实时编辑器
折叠未更改行
关闭换行
视图
拆分
统一
比对精度
智能
单词
字符
语法高亮
选择语法
忽略
文本转换
转到第一个差异
编辑输入
Diffchecker Desktop
运行Diffchecker最安全的方式。获取Diffchecker桌面应用:您的差异永远不会离开您的电脑!
获取桌面版
Untitled Diff
创建于
3年前
差异永不过期
清除
导出
分享
解释
66 删除
行
总计
删除
字符
总计
删除
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
155 行
全部复制
76 添加
行
总计
添加
字符
总计
添加
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
164 行
全部复制
; Assembly listing for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool
; Assembly listing for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; optimized code
; rsp based frame
; rsp based frame
; partially interruptible
; partially interruptible
; No PGO data
; No PGO data
复制
已复制
复制
已复制
; 0 inlinees with PGO data;
6
single block inlinees; 2 inlinees without PGO data
; 0 inlinees with PGO data;
7
single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T00] ( 5, 10 ) byref -> rcx ld-addr-op single-def
; V00 arg0 [V00,T00] ( 5, 10 ) byref -> rcx ld-addr-op single-def
复制
已复制
复制
已复制
; V01 arg1 [V01,T01] ( 10, 6 ) byref -> r
s
i single-def
; V01 arg1 [V01,T01] ( 10, 6 ) byref -> r
d
i single-def
; V02 loc0 [V02,T02] ( 8, 4.50) ref -> rcx class-hnd single-def
; V02 loc0 [V02,T02] ( 8, 4.50) ref -> rcx class-hnd single-def
复制
已复制
复制
已复制
; V03 loc1 [V03,T09] ( 3, 2 ) int -> r
d
i ld-addr-op
; V03 loc1 [V03,T09] ( 3, 2 ) int -> r
s
i ld-addr-op
; V04 loc2 [V04,T08] ( 4, 2.50) int -> rbx ld-addr-op
; V04 loc2 [V04,T08] ( 4, 2.50) int -> rbx ld-addr-op
复制
已复制
复制
已复制
; V05 loc3 [V05 ] ( 3, 1.50) struct (16) [rsp+2
0
H] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V05 loc3 [V05 ] ( 3, 1.50) struct (16) [rsp+2
8
H] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace"
; V07 tmp1 [V07,T03] ( 5, 4 ) ref -> rcx class-hnd single-def "impAppendStmt"
; V07 tmp1 [V07,T03] ( 5, 4 ) ref -> rcx class-hnd single-def "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V10 tmp4 [V10,T10] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
; V10 tmp4 [V10,T10] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
复制
已复制
复制
已复制
; V11 tmp5 [V11,T04] ( 5, 4 ) int -> r
d
i "Inlining Arg"
; V11 tmp5 [V11,T04] ( 5, 4 ) int -> r
s
i "Inlining Arg"
; V12 tmp6 [V12,T06] ( 4, 3 ) int -> rbx "Inlining Arg"
; V12 tmp6 [V12,T06] ( 4, 3 ) int -> rbx "Inlining Arg"
复制
已复制
复制
已复制
; V13 tmp7 [V13,T05] ( 5, 4 ) int ->
rdi
"Inlining Arg"
; V13 tmp7 [V13,T05] ( 5, 4 ) int ->
rbp
"Inlining Arg"
; V14 tmp8 [V14,T07] ( 4, 3 ) int -> rbx "Inlining Arg"
; V14 tmp8 [V14,T07] ( 4, 3 ) int -> rbx "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref V27._object(offs=0x00) P-INDEP "field V00._object (fldOffset=0x0)"
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref V27._object(offs=0x00) P-INDEP "field V00._object (fldOffset=0x0)"
;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref V27._index(offs=0x08) P-INDEP "field V00._index (fldOffset=0x8)"
;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref V27._index(offs=0x08) P-INDEP "field V00._index (fldOffset=0x8)"
;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x0c) P-INDEP "field V00._length (fldOffset=0xc)"
;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x0c) P-INDEP "field V00._length (fldOffset=0xc)"
复制
已复制
复制
已复制
; V18 tmp12 [V18 ] ( 2, 1 ) ref -> [rsp+2
0
H] do-not-enreg[X] addr-exposed V05._array(offs=0x00) P-DEP "field V05._array (fldOffset=0x0)"
; V18 tmp12 [V18 ] ( 2, 1 ) ref -> [rsp+2
8
H] do-not-enreg[X] addr-exposed V05._array(offs=0x00) P-DEP "field V05._array (fldOffset=0x0)"
; V19 tmp13 [V19 ] ( 2, 1 ) int -> [rsp+
28H
] do-not-enreg[X] addr-exposed V05._offset(offs=0x08) P-DEP "field V05._offset (fldOffset=0x8)"
; V19 tmp13 [V19 ] ( 2, 1 ) int -> [rsp+
30H
] do-not-enreg[X] addr-exposed V05._offset(offs=0x08) P-DEP "field V05._offset (fldOffset=0x8)"
; V20 tmp14 [V20 ] ( 1, 0.50) int -> [rsp+
2CH
] do-not-enreg[X] addr-exposed V05._count(offs=0x0c) P-DEP "field V05._count (fldOffset=0xc)"
; V20 tmp14 [V20 ] ( 1, 0.50) int -> [rsp+
34H
] do-not-enreg[X] addr-exposed V05._count(offs=0x0c) P-DEP "field V05._count (fldOffset=0xc)"
; V21 tmp15 [V21,T13] ( 2, 1 ) ref -> rdx single-def V08._array(offs=0x00) P-INDEP "field V08._array (fldOffset=0x0)"
; V21 tmp15 [V21,T13] ( 2, 1 ) ref -> rdx single-def V08._array(offs=0x00) P-INDEP "field V08._array (fldOffset=0x0)"
复制
已复制
复制
已复制
; V22 tmp16 [V22,T15] ( 2, 1 ) int ->
rdi
V08._offset(offs=0x08) P-INDEP "field V08._offset (fldOffset=0x8)"
; V22 tmp16 [V22,T15] ( 2, 1 ) int ->
rbp
V08._offset(offs=0x08) P-INDEP "field V08._offset (fldOffset=0x8)"
; V23 tmp17 [V23,T16] ( 2, 1 ) int -> rbx V08._count(offs=0x0c) P-INDEP "field V08._count (fldOffset=0xc)"
; V23 tmp17 [V23,T16] ( 2, 1 ) int -> rbx V08._count(offs=0x0c) P-INDEP "field V08._count (fldOffset=0xc)"
; V24 tmp18 [V24,T14] ( 2, 1 ) ref -> rdx single-def V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)"
; V24 tmp18 [V24,T14] ( 2, 1 ) ref -> rdx single-def V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)"
复制
已复制
复制
已复制
; V25 tmp19 [V25,T17] ( 2, 1 ) int -> r
d
i V09._offset(offs=0x08) P-INDEP "field V09._offset (fldOffset=0x8)"
; V25 tmp19 [V25,T17] ( 2, 1 ) int -> r
s
i V09._offset(offs=0x08) P-INDEP "field V09._offset (fldOffset=0x8)"
; V26 tmp20 [V26,T18] ( 2, 1 ) int -> rbx V09._count(offs=0x0c) P-INDEP "field V09._count (fldOffset=0xc)"
; V26 tmp20 [V26,T18] ( 2, 1 ) int -> rbx V09._count(offs=0x0c) P-INDEP "field V09._count (fldOffset=0xc)"
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
; V28 cse0 [V28,T11] ( 3, 1.50) int -> rdx "CSE - moderate"
; V28 cse0 [V28,T11] ( 3, 1.50) int -> rdx "CSE - moderate"
; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate"
; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate"
;
;
复制
已复制
复制
已复制
; Lcl frame size =
48
; Lcl frame size =
56
G_M22933_IG01:
G_M22933_IG01:
push rdi
push rdi
push rsi
push rsi
复制
已复制
复制
已复制
push rbp
push rbx
push rbx
复制
已复制
复制
已复制
sub rsp,
48
sub rsp,
56
xor eax, eax
xor eax, eax
复制
已复制
复制
已复制
mov qword ptr [rsp+2
0
H], rax
mov qword ptr [rsp+2
8
H], rax
mov r
s
i, rdx
mov r
d
i, rdx
;; size=
17
bbWeight=1 PerfScore
4
.75
;; size=
18
bbWeight=1 PerfScore
5
.75
G_M22933_IG02:
G_M22933_IG02:
复制
已复制
复制
已复制
mov e
d
i, dword ptr [rcx+08H]
mov e
s
i, dword ptr [rcx+08H]
mov ebx, dword ptr [rcx+0CH]
mov ebx, dword ptr [rcx+0CH]
mov rcx, gword ptr [rcx]
mov rcx, gword ptr [rcx]
test rcx, rcx
test rcx, rcx
je G_M22933_IG07
je G_M22933_IG07
;; size=18 bbWeight=1 PerfScore 7.25
;; size=18 bbWeight=1 PerfScore 7.25
G_M22933_IG03:
G_M22933_IG03:
mov rdx, qword ptr [rcx]
mov rdx, qword ptr [rcx]
test dword ptr [rdx], 0xD1FFAB1E
test dword ptr [rdx], 0xD1FFAB1E
je SHORT G_M22933_IG05
je SHORT G_M22933_IG05
复制
已复制
复制
已复制
and e
d
i, 0xD1FFAB1E
and e
s
i, 0xD1FFAB1E
mov edx, dword ptr [rcx+08H]
mov edx, dword ptr [rcx+08H]
复制
已复制
复制
已复制
cmp edx, e
d
i
cmp edx, e
s
i
jb G_M22933_IG11
jb G_M22933_IG11
复制
已复制
复制
已复制
sub edx, e
d
i
sub edx, e
s
i
cmp edx, ebx
cmp edx, ebx
jb G_M22933_IG11
jb G_M22933_IG11
mov rdx, rcx
mov rdx, rcx
复制
已复制
复制
已复制
mov rcx, r
s
i
mov rcx, r
d
i
call CORINFO_HELP_CHECKED_ASSIGN_REF
call CORINFO_HELP_CHECKED_ASSIGN_REF
复制
已复制
复制
已复制
mov dword ptr [r
s
i+08H], e
d
i
mov dword ptr [r
d
i+08H], e
s
i
mov dword ptr [r
s
i+0CH], ebx
mov dword ptr [r
d
i+0CH], ebx
mov eax, 1
mov eax, 1
;; size=60 bbWeight=0.50 PerfScore 7.38
;; size=60 bbWeight=0.50 PerfScore 7.38
G_M22933_IG04:
G_M22933_IG04:
复制
已复制
复制
已复制
add rsp,
48
add rsp,
56
pop rbx
pop rbx
复制
已复制
复制
已复制
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
复制
已复制
复制
已复制
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG05:
G_M22933_IG05:
复制
已复制
复制
已复制
lea rdx, [rsp+2
0
H]
lea rdx, [rsp+2
8
H]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+48H]
mov rax, qword ptr [rax+48H]
call [rax]System.Buffers.MemoryManager`1[double]:TryGetArray(byref):bool:this
call [rax]System.Buffers.MemoryManager`1[double]:TryGetArray(byref):bool:this
test eax, eax
test eax, eax
je SHORT G_M22933_IG07
je SHORT G_M22933_IG07
复制
已复制
复制
已复制
mov rcx, gword ptr [rsp+2
0
H]
mov rcx, gword ptr [rsp+2
8
H]
add
edi
, dword ptr [rsp+
28H
]
mov ebp, esi
add
ebp
, dword ptr [rsp+
30H
]
test rcx, rcx
test rcx, rcx
je SHORT G_M22933_IG12
je SHORT G_M22933_IG12
mov edx, dword ptr [rcx+08H]
mov edx, dword ptr [rcx+08H]
复制
已复制
复制
已复制
cmp edx,
edi
cmp edx,
ebp
jb SHORT G_M22933_IG12
jb SHORT G_M22933_IG12
复制
已复制
复制
已复制
sub edx,
edi
sub edx,
ebp
cmp edx, ebx
cmp edx, ebx
jb SHORT G_M22933_IG12
jb SHORT G_M22933_IG12
mov rdx, rcx
mov rdx, rcx
复制
已复制
复制
已复制
mov rcx, r
s
i
mov rcx, r
d
i
call CORINFO_HELP_CHECKED_ASSIGN_REF
call CORINFO_HELP_CHECKED_ASSIGN_REF
复制
已复制
复制
已复制
mov dword ptr [r
s
i+08H],
edi
mov dword ptr [r
d
i+08H],
ebp
mov dword ptr [r
s
i+0CH], ebx
mov dword ptr [r
d
i+0CH], ebx
mov eax, 1
mov eax, 1
复制
已复制
复制
已复制
;; size=
67
bbWeight=0.50 PerfScore 10.
75
;; size=
69
bbWeight=0.50 PerfScore 10.
88
G_M22933_IG06:
G_M22933_IG06:
复制
已复制
复制
已复制
add rsp,
48
add rsp,
56
pop rbx
pop rbx
复制
已复制
复制
已复制
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
复制
已复制
复制
已复制
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG07:
G_M22933_IG07:
test ebx, ebx
test ebx, ebx
jne SHORT G_M22933_IG09
jne SHORT G_M22933_IG09
复制
已复制
复制
已复制
mov r
c
x,
rsi
mov r
a
x,
0xD1FFAB1E
; box for
System.ArraySegment`1[double]:
<
Empty
>k__BackingField
call [
System.ArraySegment`1[double]:
get_
Empty
():System.ArraySegment`1[double]]
mov rsi, gword ptr [rax]
add rsi, 8
call CORINFO_HELP_ASSIGN_BYREF
movsq
mov eax, 1
mov eax, 1
复制
已复制
复制
已复制
;; size=
18
bbWeight=0.50 PerfScore
2.38
;; size=
33
bbWeight=0.50 PerfScore
3.00
G_M22933_IG08:
G_M22933_IG08:
复制
已复制
复制
已复制
add rsp,
48
add rsp,
56
pop rbx
pop rbx
复制
已复制
复制
已复制
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
复制
已复制
复制
已复制
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG09:
G_M22933_IG09:
xor eax, eax
xor eax, eax
复制
已复制
复制
已复制
mov qword ptr [r
s
i], rax
mov qword ptr [r
d
i], rax
mov qword ptr [r
s
i+08H], rax
mov qword ptr [r
d
i+08H], rax
;; size=9 bbWeight=0.50 PerfScore 1.12
;; size=9 bbWeight=0.50 PerfScore 1.12
G_M22933_IG10:
G_M22933_IG10:
复制
已复制
复制
已复制
add rsp,
48
add rsp,
56
pop rbx
pop rbx
复制
已复制
复制
已复制
pop rbp
pop rsi
pop rsi
pop rdi
pop rdi
ret
ret
复制
已复制
复制
已复制
;; size=
8
bbWeight=0.50 PerfScore 1.
38
;; size=
9
bbWeight=0.50 PerfScore 1.
62
G_M22933_IG11:
G_M22933_IG11:
复制
已复制
复制
已复制
mov edx, e
d
i
mov edx, e
s
i
mov r8d, ebx
mov r8d, ebx
call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)]
call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)]
int3
int3
;; size=12 bbWeight=0 PerfScore 0.00
;; size=12 bbWeight=0 PerfScore 0.00
G_M22933_IG12:
G_M22933_IG12:
复制
已复制
复制
已复制
mov edx,
edi
mov edx,
ebp
mov r8d, ebx
mov r8d, ebx
call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)]
call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)]
int3
int3
;; size=12 bbWeight=0 PerfScore 0.00
;; size=12 bbWeight=0 PerfScore 0.00
复制
已复制
复制
已复制
; Total bytes of code
245
, prolog size
14
, PerfScore
63.63
, instruction count
86
, allocated bytes for code
245
(MethodHash=21d5a66a) for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool
; Total bytes of code
267
, prolog size
15
, PerfScore
68.58
, instruction count
95
, allocated bytes for code
267
(MethodHash=21d5a66a) for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool
; ============================================================
; ============================================================
已保存差异
原始文本
打开文件
; Assembly listing for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 10 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T01] ( 10, 6 ) byref -> rsi single-def ; V02 loc0 [V02,T02] ( 8, 4.50) ref -> rcx class-hnd single-def ; V03 loc1 [V03,T09] ( 3, 2 ) int -> rdi ld-addr-op ; V04 loc2 [V04,T08] ( 4, 2.50) int -> rbx ld-addr-op ; V05 loc3 [V05 ] ( 3, 1.50) struct (16) [rsp+20H] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ; V07 tmp1 [V07,T03] ( 5, 4 ) ref -> rcx class-hnd single-def "impAppendStmt" ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V10 tmp4 [V10,T10] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" ; V11 tmp5 [V11,T04] ( 5, 4 ) int -> rdi "Inlining Arg" ; V12 tmp6 [V12,T06] ( 4, 3 ) int -> rbx "Inlining Arg" ; V13 tmp7 [V13,T05] ( 5, 4 ) int -> rdi "Inlining Arg" ; V14 tmp8 [V14,T07] ( 4, 3 ) int -> rbx "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref V27._object(offs=0x00) P-INDEP "field V00._object (fldOffset=0x0)" ;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref V27._index(offs=0x08) P-INDEP "field V00._index (fldOffset=0x8)" ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x0c) P-INDEP "field V00._length (fldOffset=0xc)" ; V18 tmp12 [V18 ] ( 2, 1 ) ref -> [rsp+20H] do-not-enreg[X] addr-exposed V05._array(offs=0x00) P-DEP "field V05._array (fldOffset=0x0)" ; V19 tmp13 [V19 ] ( 2, 1 ) int -> [rsp+28H] do-not-enreg[X] addr-exposed V05._offset(offs=0x08) P-DEP "field V05._offset (fldOffset=0x8)" ; V20 tmp14 [V20 ] ( 1, 0.50) int -> [rsp+2CH] do-not-enreg[X] addr-exposed V05._count(offs=0x0c) P-DEP "field V05._count (fldOffset=0xc)" ; V21 tmp15 [V21,T13] ( 2, 1 ) ref -> rdx single-def V08._array(offs=0x00) P-INDEP "field V08._array (fldOffset=0x0)" ; V22 tmp16 [V22,T15] ( 2, 1 ) int -> rdi V08._offset(offs=0x08) P-INDEP "field V08._offset (fldOffset=0x8)" ; V23 tmp17 [V23,T16] ( 2, 1 ) int -> rbx V08._count(offs=0x0c) P-INDEP "field V08._count (fldOffset=0xc)" ; V24 tmp18 [V24,T14] ( 2, 1 ) ref -> rdx single-def V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)" ; V25 tmp19 [V25,T17] ( 2, 1 ) int -> rdi V09._offset(offs=0x08) P-INDEP "field V09._offset (fldOffset=0x8)" ; V26 tmp20 [V26,T18] ( 2, 1 ) int -> rbx V09._count(offs=0x0c) P-INDEP "field V09._count (fldOffset=0xc)" ;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V28 cse0 [V28,T11] ( 3, 1.50) int -> rdx "CSE - moderate" ; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 48 G_M22933_IG01: push rdi push rsi push rbx sub rsp, 48 xor eax, eax mov qword ptr [rsp+20H], rax mov rsi, rdx ;; size=17 bbWeight=1 PerfScore 4.75 G_M22933_IG02: mov edi, dword ptr [rcx+08H] mov ebx, dword ptr [rcx+0CH] mov rcx, gword ptr [rcx] test rcx, rcx je G_M22933_IG07 ;; size=18 bbWeight=1 PerfScore 7.25 G_M22933_IG03: mov rdx, qword ptr [rcx] test dword ptr [rdx], 0xD1FFAB1E je SHORT G_M22933_IG05 and edi, 0xD1FFAB1E mov edx, dword ptr [rcx+08H] cmp edx, edi jb G_M22933_IG11 sub edx, edi cmp edx, ebx jb G_M22933_IG11 mov rdx, rcx mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rsi+08H], edi mov dword ptr [rsi+0CH], ebx mov eax, 1 ;; size=60 bbWeight=0.50 PerfScore 7.38 G_M22933_IG04: add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M22933_IG05: lea rdx, [rsp+20H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+48H] call [rax]System.Buffers.MemoryManager`1[double]:TryGetArray(byref):bool:this test eax, eax je SHORT G_M22933_IG07 mov rcx, gword ptr [rsp+20H] add edi, dword ptr [rsp+28H] test rcx, rcx je SHORT G_M22933_IG12 mov edx, dword ptr [rcx+08H] cmp edx, edi jb SHORT G_M22933_IG12 sub edx, edi cmp edx, ebx jb SHORT G_M22933_IG12 mov rdx, rcx mov rcx, rsi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rsi+08H], edi mov dword ptr [rsi+0CH], ebx mov eax, 1 ;; size=67 bbWeight=0.50 PerfScore 10.75 G_M22933_IG06: add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M22933_IG07: test ebx, ebx jne SHORT G_M22933_IG09 mov rcx, rsi call [System.ArraySegment`1[double]:get_Empty():System.ArraySegment`1[double]] mov eax, 1 ;; size=18 bbWeight=0.50 PerfScore 2.38 G_M22933_IG08: add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M22933_IG09: xor eax, eax mov qword ptr [rsi], rax mov qword ptr [rsi+08H], rax ;; size=9 bbWeight=0.50 PerfScore 1.12 G_M22933_IG10: add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M22933_IG11: mov edx, edi mov r8d, ebx call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M22933_IG12: mov edx, edi mov r8d, ebx call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 ; Total bytes of code 245, prolog size 14, PerfScore 63.63, instruction count 86, allocated bytes for code 245 (MethodHash=21d5a66a) for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool ; ============================================================
更改后文本
打开文件
; Assembly listing for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool ; Emitting BLENDED_CODE for X64 CPU with AVX - Windows ; optimized code ; rsp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 5, 10 ) byref -> rcx ld-addr-op single-def ; V01 arg1 [V01,T01] ( 10, 6 ) byref -> rdi single-def ; V02 loc0 [V02,T02] ( 8, 4.50) ref -> rcx class-hnd single-def ; V03 loc1 [V03,T09] ( 3, 2 ) int -> rsi ld-addr-op ; V04 loc2 [V04,T08] ( 4, 2.50) int -> rbx ld-addr-op ; V05 loc3 [V05 ] ( 3, 1.50) struct (16) [rsp+28H] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V06 OutArgs [V06 ] ( 1, 1 ) lclBlk (32) [rsp+00H] "OutgoingArgSpace" ; V07 tmp1 [V07,T03] ( 5, 4 ) ref -> rcx class-hnd single-def "impAppendStmt" ;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V10 tmp4 [V10,T10] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" ; V11 tmp5 [V11,T04] ( 5, 4 ) int -> rsi "Inlining Arg" ; V12 tmp6 [V12,T06] ( 4, 3 ) int -> rbx "Inlining Arg" ; V13 tmp7 [V13,T05] ( 5, 4 ) int -> rbp "Inlining Arg" ; V14 tmp8 [V14,T07] ( 4, 3 ) int -> rbx "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref V27._object(offs=0x00) P-INDEP "field V00._object (fldOffset=0x0)" ;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref V27._index(offs=0x08) P-INDEP "field V00._index (fldOffset=0x8)" ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref V27._length(offs=0x0c) P-INDEP "field V00._length (fldOffset=0xc)" ; V18 tmp12 [V18 ] ( 2, 1 ) ref -> [rsp+28H] do-not-enreg[X] addr-exposed V05._array(offs=0x00) P-DEP "field V05._array (fldOffset=0x0)" ; V19 tmp13 [V19 ] ( 2, 1 ) int -> [rsp+30H] do-not-enreg[X] addr-exposed V05._offset(offs=0x08) P-DEP "field V05._offset (fldOffset=0x8)" ; V20 tmp14 [V20 ] ( 1, 0.50) int -> [rsp+34H] do-not-enreg[X] addr-exposed V05._count(offs=0x0c) P-DEP "field V05._count (fldOffset=0xc)" ; V21 tmp15 [V21,T13] ( 2, 1 ) ref -> rdx single-def V08._array(offs=0x00) P-INDEP "field V08._array (fldOffset=0x0)" ; V22 tmp16 [V22,T15] ( 2, 1 ) int -> rbp V08._offset(offs=0x08) P-INDEP "field V08._offset (fldOffset=0x8)" ; V23 tmp17 [V23,T16] ( 2, 1 ) int -> rbx V08._count(offs=0x0c) P-INDEP "field V08._count (fldOffset=0xc)" ; V24 tmp18 [V24,T14] ( 2, 1 ) ref -> rdx single-def V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)" ; V25 tmp19 [V25,T17] ( 2, 1 ) int -> rsi V09._offset(offs=0x08) P-INDEP "field V09._offset (fldOffset=0x8)" ; V26 tmp20 [V26,T18] ( 2, 1 ) int -> rbx V09._count(offs=0x0c) P-INDEP "field V09._count (fldOffset=0xc)" ;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" ; V28 cse0 [V28,T11] ( 3, 1.50) int -> rdx "CSE - moderate" ; V29 cse1 [V29,T12] ( 3, 1.50) int -> rdx "CSE - moderate" ; ; Lcl frame size = 56 G_M22933_IG01: push rdi push rsi push rbp push rbx sub rsp, 56 xor eax, eax mov qword ptr [rsp+28H], rax mov rdi, rdx ;; size=18 bbWeight=1 PerfScore 5.75 G_M22933_IG02: mov esi, dword ptr [rcx+08H] mov ebx, dword ptr [rcx+0CH] mov rcx, gword ptr [rcx] test rcx, rcx je G_M22933_IG07 ;; size=18 bbWeight=1 PerfScore 7.25 G_M22933_IG03: mov rdx, qword ptr [rcx] test dword ptr [rdx], 0xD1FFAB1E je SHORT G_M22933_IG05 and esi, 0xD1FFAB1E mov edx, dword ptr [rcx+08H] cmp edx, esi jb G_M22933_IG11 sub edx, esi cmp edx, ebx jb G_M22933_IG11 mov rdx, rcx mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rdi+08H], esi mov dword ptr [rdi+0CH], ebx mov eax, 1 ;; size=60 bbWeight=0.50 PerfScore 7.38 G_M22933_IG04: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M22933_IG05: lea rdx, [rsp+28H] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+48H] call [rax]System.Buffers.MemoryManager`1[double]:TryGetArray(byref):bool:this test eax, eax je SHORT G_M22933_IG07 mov rcx, gword ptr [rsp+28H] mov ebp, esi add ebp, dword ptr [rsp+30H] test rcx, rcx je SHORT G_M22933_IG12 mov edx, dword ptr [rcx+08H] cmp edx, ebp jb SHORT G_M22933_IG12 sub edx, ebp cmp edx, ebx jb SHORT G_M22933_IG12 mov rdx, rcx mov rcx, rdi call CORINFO_HELP_CHECKED_ASSIGN_REF mov dword ptr [rdi+08H], ebp mov dword ptr [rdi+0CH], ebx mov eax, 1 ;; size=69 bbWeight=0.50 PerfScore 10.88 G_M22933_IG06: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M22933_IG07: test ebx, ebx jne SHORT G_M22933_IG09 mov rax, 0xD1FFAB1E ; box for System.ArraySegment`1[double]:<Empty>k__BackingField mov rsi, gword ptr [rax] add rsi, 8 call CORINFO_HELP_ASSIGN_BYREF movsq mov eax, 1 ;; size=33 bbWeight=0.50 PerfScore 3.00 G_M22933_IG08: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M22933_IG09: xor eax, eax mov qword ptr [rdi], rax mov qword ptr [rdi+08H], rax ;; size=9 bbWeight=0.50 PerfScore 1.12 G_M22933_IG10: add rsp, 56 pop rbx pop rbp pop rsi pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62 G_M22933_IG11: mov edx, esi mov r8d, ebx call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 G_M22933_IG12: mov edx, ebp mov r8d, ebx call [System.ThrowHelper:ThrowArraySegmentCtorValidationFailedExceptions(System.Array,int,int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00 ; Total bytes of code 267, prolog size 15, PerfScore 68.58, instruction count 95, allocated bytes for code 267 (MethodHash=21d5a66a) for method System.Runtime.InteropServices.MemoryMarshal:TryGetArray[double](System.ReadOnlyMemory`1[double],byref):bool ; ============================================================
查找差异