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 ; ============================================================
尋找差異