Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 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 ; ============================================================
비교하기