Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
공백 변경 숨기기
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
텍스트 스타일
모양 변경
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
Baseline diff
생성일
5년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
26 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
165 행
복사
19 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
160 행
복사
; Assembly listing for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool
; Assembly listing for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool
; Emitting BLENDED_CODE for generic ARM64 CPU - Windows
; Emitting BLENDED_CODE for generic ARM64 CPU - Windows
; optimized code
; optimized code
; fp based frame
; fp based frame
; fully interruptible
; fully interruptible
; No PGO data
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; invoked as altjit
; invoked as altjit
; Final local variable assignments
; Final local variable assignments
;
;
복사
복사됨
복사
복사됨
; V00 arg0 [V00,T00] (
10
, 20
.50
) int -> [fp+1CH]
; V00 arg0 [V00,T00] (
9
, 20
) int -> [fp+1CH]
; V01 arg1 [V01,T07] ( 6, 4.50) int -> [fp+18H] single-def
; V01 arg1 [V01,T07] ( 6, 4.50) int -> [fp+18H] single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def
; V03 arg3 [V03,T08] ( 4, 3 ) byref -> x4 single-def
; V03 arg3 [V03,T08] ( 4, 3 ) byref -> x4 single-def
; V04 loc0 [V04,T11] ( 4, 3 ) int -> x6
; V04 loc0 [V04,T11] ( 4, 3 ) int -> x6
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref
; V06 loc2 [V06 ] ( 2, 1 ) byref -> [fp+10H] must-init pinned
; V06 loc2 [V06 ] ( 2, 1 ) byref -> [fp+10H] must-init pinned
; V07 loc3 [V07,T02] ( 5, 13 ) long -> x2
; V07 loc3 [V07,T02] ( 5, 13 ) long -> x2
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
;# V09 OutArgs [V09 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;# V09 OutArgs [V09 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill"
; V11 tmp2 [V11,T01] ( 2, 16 ) long -> x2 "dup spill"
; V11 tmp2 [V11,T01] ( 2, 16 ) long -> x2 "dup spill"
; V12 tmp3 [V12,T06] ( 12, 7 ) int -> x6 "Inline stloc first use temp"
; V12 tmp3 [V12,T06] ( 12, 7 ) int -> x6 "Inline stloc first use temp"
; V13 tmp4 [V13,T04] ( 7, 10 ) int -> x5 "Inlining Arg"
; V13 tmp4 [V13,T04] ( 7, 10 ) int -> x5 "Inlining Arg"
복사
복사됨
복사
복사됨
; V14 tmp5 [V14,T1
3
] ( 3, 2 ) int -> x6 "Inline return value spill temp"
; V14 tmp5 [V14,T1
2
] ( 3, 2 ) int -> x6 "Inline return value spill temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
; V16 tmp7 [V16,T03] ( 3, 12 ) int -> x1 "Inline stloc first use temp"
; V16 tmp7 [V16,T03] ( 3, 12 ) int -> x1 "Inline stloc first use temp"
;* V17 tmp8 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp"
;* V17 tmp8 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp"
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V19 tmp10 [V19,T09] ( 3, 2 ) byref -> x2 single-def V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)"
; V19 tmp10 [V19,T09] ( 3, 2 ) byref -> x2 single-def V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)"
; V20 tmp11 [V20,T10] ( 2, 2 ) int -> x3 single-def V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)"
; V20 tmp11 [V20,T10] ( 2, 2 ) int -> x3 single-def V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)"
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref V10.Item1(offs=0x00) P-INDEP "field V10.Item1 (fldOffset=0x0)"
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref V10.Item1(offs=0x00) P-INDEP "field V10.Item1 (fldOffset=0x0)"
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref V10.Item2(offs=0x04) P-INDEP "field V10.Item2 (fldOffset=0x4)"
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref V10.Item2(offs=0x04) P-INDEP "field V10.Item2 (fldOffset=0x4)"
복사
복사됨
복사
복사됨
;* V23 tmp14 [V23,T1
5
] ( 0, 0 ) byref -> zero-ref single-def V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)"
;* V23 tmp14 [V23,T1
4
] ( 0, 0 ) byref -> zero-ref single-def V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)"
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)"
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)"
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref V17.Item1(offs=0x00) P-INDEP "field V17.Item1 (fldOffset=0x0)"
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref V17.Item1(offs=0x00) P-INDEP "field V17.Item1 (fldOffset=0x0)"
; V26 tmp17 [V26,T05] ( 2, 8 ) int -> x3 V17.Item2(offs=0x04) P-INDEP "field V17.Item2 (fldOffset=0x4)"
; V26 tmp17 [V26,T05] ( 2, 8 ) int -> x3 V17.Item2(offs=0x04) P-INDEP "field V17.Item2 (fldOffset=0x4)"
복사
복사됨
복사
복사됨
; V27 tmp18 [V27,T1
4
] ( 2, 2 ) long -> x2 "Cast away GC"
; V27 tmp18 [V27,T1
3
] ( 2, 2 ) long -> x2 "Cast away GC"
; V28 rat0 [V28,T12] ( 3, 3 ) int -> x6 "ReplaceWithLclVar is creating a new local variable"
;
;
; Lcl frame size = 16
; Lcl frame size = 16
G_M40505_IG01:
G_M40505_IG01:
stp fp, lr, [sp,#-32]!
stp fp, lr, [sp,#-32]!
mov fp, sp
mov fp, sp
str xzr, [fp,#16] // [V06 loc2]
str xzr, [fp,#16] // [V06 loc2]
;; bbWeight=1 PerfScore 2.50
;; bbWeight=1 PerfScore 2.50
G_M40505_IG02:
G_M40505_IG02:
mov w5, w0
mov w5, w0
mov w6, #1
mov w6, #1
movz w7, #0xd1ffab1e
movz w7, #0xd1ffab1e
movk w7, #1 LSL #16
movk w7, #1 LSL #16
cmp w5, w7
cmp w5, w7
blo G_M40505_IG04
blo G_M40505_IG04
;; bbWeight=1 PerfScore 3.50
;; bbWeight=1 PerfScore 3.50
G_M40505_IG03:
G_M40505_IG03:
복사
복사됨
복사
복사됨
movz
w5
, #0xd1ffab1e
movz
x5
, #0xd1ffab1e
movk
w5
, #0xd1ffab1e LSL #16
movk
x5
, #0xd1ffab1e LSL #16
umull x6, w0, w5
movk
x5, #0xd1ffab1e LSL
#32
lsr
x6, x6,
#32
mov
w6
, w0
sub
w5
, w0
, w6
umulh
x5, x6, x5
lsr w5, w5, #1
add
w5, w5, w6
lsr w5, w5, #16
mov w6, #6
mov w6, #6
;; bbWeight=0.50 PerfScore 3.75
;; bbWeight=0.50 PerfScore 3.75
G_M40505_IG04:
G_M40505_IG04:
cmp w5, #10
cmp w5, #10
blo G_M40505_IG09
blo G_M40505_IG09
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M40505_IG05:
G_M40505_IG05:
cmp w5, #100
cmp w5, #100
bhs G_M40505_IG06
bhs G_M40505_IG06
add w6, w6, #1
add w6, w6, #1
b G_M40505_IG09
b G_M40505_IG09
;; bbWeight=0.50 PerfScore 1.50
;; bbWeight=0.50 PerfScore 1.50
G_M40505_IG06:
G_M40505_IG06:
cmp w5, #0xd1ffab1e
cmp w5, #0xd1ffab1e
bhs G_M40505_IG07
bhs G_M40505_IG07
add w6, w6, #2
add w6, w6, #2
b G_M40505_IG09
b G_M40505_IG09
;; bbWeight=0.50 PerfScore 1.50
;; bbWeight=0.50 PerfScore 1.50
G_M40505_IG07:
G_M40505_IG07:
mov w7, #0xd1ffab1e
mov w7, #0xd1ffab1e
cmp w5, w7
cmp w5, w7
bhs G_M40505_IG08
bhs G_M40505_IG08
add w6, w6, #3
add w6, w6, #3
b G_M40505_IG09
b G_M40505_IG09
;; bbWeight=0.50 PerfScore 1.75
;; bbWeight=0.50 PerfScore 1.75
G_M40505_IG08:
G_M40505_IG08:
add w6, w6, #4
add w6, w6, #4
;; bbWeight=0.50 PerfScore 0.25
;; bbWeight=0.50 PerfScore 0.25
G_M40505_IG09:
G_M40505_IG09:
cmp w1, w6
cmp w1, w6
bge G_M40505_IG11
bge G_M40505_IG11
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M40505_IG10:
G_M40505_IG10:
b G_M40505_IG12
b G_M40505_IG12
;; bbWeight=0.50 PerfScore 0.50
;; bbWeight=0.50 PerfScore 0.50
G_M40505_IG11:
G_M40505_IG11:
mov w6, w1
mov w6, w1
;; bbWeight=0.50 PerfScore 0.25
;; bbWeight=0.50 PerfScore 0.25
G_M40505_IG12:
G_M40505_IG12:
cmp w6, w3
cmp w6, w3
ble G_M40505_IG15
ble G_M40505_IG15
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M40505_IG13:
G_M40505_IG13:
str wzr, [x4]
str wzr, [x4]
mov w0, #0
mov w0, #0
;; bbWeight=0.50 PerfScore 0.75
;; bbWeight=0.50 PerfScore 0.75
G_M40505_IG14:
G_M40505_IG14:
ldp fp, lr, [sp],#32
ldp fp, lr, [sp],#32
ret lr
ret lr
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M40505_IG15:
G_M40505_IG15:
str w6, [x4]
str w6, [x4]
str x2, [fp,#16] // [V06 loc2]
str x2, [fp,#16] // [V06 loc2]
sxtw x3, w6
sxtw x3, w6
lsl x3, x3, #1
lsl x3, x3, #1
add x2, x2, x3
add x2, x2, x3
str w1, [fp,#24] // [V01 arg1]
str w1, [fp,#24] // [V01 arg1]
cmp w1, #1
cmp w1, #1
bgt G_M40505_IG18
bgt G_M40505_IG18
;; bbWeight=0.50 PerfScore 3.25
;; bbWeight=0.50 PerfScore 3.25
G_M40505_IG16:
G_M40505_IG16:
movz w1, #0xd1ffab1e
movz w1, #0xd1ffab1e
movk w1, #0xd1ffab1e LSL #16
movk w1, #0xd1ffab1e LSL #16
umull x1, w0, w1
umull x1, w0, w1
복사
복사됨
복사
복사됨
lsr x1, x1, #
32
lsr x1, x1, #
35
lsr w1, w1, #3
mov x3, #5
mov x3, #5
mul w3, w1, w3
mul w3, w1, w3
lsl w3, w3, #1
lsl w3, w3, #1
sub w3, w0, w3
sub w3, w0, w3
mov w0, w1
mov w0, w1
sub x2, x2, #2
sub x2, x2, #2
add w1, w3, #48
add w1, w3, #48
strh w1, [x2]
strh w1, [x2]
cbnz w0, G_M40505_IG16
cbnz w0, G_M40505_IG16
복사
복사됨
복사
복사됨
;; bbWeight=4 PerfScore
50
.00
;; bbWeight=4 PerfScore
46
.00
G_M40505_IG17:
G_M40505_IG17:
b G_M40505_IG19
b G_M40505_IG19
;; bbWeight=0.50 PerfScore 0.50
;; bbWeight=0.50 PerfScore 0.50
G_M40505_IG18:
G_M40505_IG18:
str w0, [fp,#28] // [V00 arg0]
str w0, [fp,#28] // [V00 arg0]
mov x0, x2
mov x0, x2
ldr w1, [fp,#28] // [V00 arg0]
ldr w1, [fp,#28] // [V00 arg0]
ldr w2, [fp,#24] // [V01 arg1]
ldr w2, [fp,#24] // [V01 arg1]
bl Number:UInt32ToDecChars(long,int,int):long
bl Number:UInt32ToDecChars(long,int,int):long
;; bbWeight=0.50 PerfScore 3.25
;; bbWeight=0.50 PerfScore 3.25
G_M40505_IG19:
G_M40505_IG19:
str xzr, [fp,#16] // [V06 loc2]
str xzr, [fp,#16] // [V06 loc2]
mov w0, #1
mov w0, #1
;; bbWeight=0.50 PerfScore 0.75
;; bbWeight=0.50 PerfScore 0.75
G_M40505_IG20:
G_M40505_IG20:
ldp fp, lr, [sp],#32
ldp fp, lr, [sp],#32
ret lr
ret lr
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M40505_IG21:
G_M40505_IG21:
bl CORINFO_HELP_THROWDIVZERO
bl CORINFO_HELP_THROWDIVZERO
bkpt
bkpt
;; bbWeight=0 PerfScore 0.00
;; bbWeight=0 PerfScore 0.00
복사
복사됨
복사
복사됨
; Total bytes of code
312
, prolog size 12, PerfScore
111.70
, instruction count
78
, allocated bytes for code
312
(MethodHash=d74a61c6) for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool
; Total bytes of code
296
, prolog size 12, PerfScore
106.10
, instruction count
74
, allocated bytes for code
296
(MethodHash=d74a61c6) for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool
; ============================================================
; ============================================================
저장된 비교 결과
원본
파일 열기
; Assembly listing for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool ; Emitting BLENDED_CODE for generic ARM64 CPU - Windows ; optimized code ; fp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; invoked as altjit ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 10, 20.50) int -> [fp+1CH] ; V01 arg1 [V01,T07] ( 6, 4.50) int -> [fp+18H] single-def ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def ; V03 arg3 [V03,T08] ( 4, 3 ) byref -> x4 single-def ; V04 loc0 [V04,T11] ( 4, 3 ) int -> x6 ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc2 [V06 ] ( 2, 1 ) byref -> [fp+10H] must-init pinned ; V07 loc3 [V07,T02] ( 5, 13 ) long -> x2 ;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref ;# V09 OutArgs [V09 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" ; V11 tmp2 [V11,T01] ( 2, 16 ) long -> x2 "dup spill" ; V12 tmp3 [V12,T06] ( 12, 7 ) int -> x6 "Inline stloc first use temp" ; V13 tmp4 [V13,T04] ( 7, 10 ) int -> x5 "Inlining Arg" ; V14 tmp5 [V14,T13] ( 3, 2 ) int -> x6 "Inline return value spill temp" ;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V16 tmp7 [V16,T03] ( 3, 12 ) int -> x1 "Inline stloc first use temp" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V19 tmp10 [V19,T09] ( 3, 2 ) byref -> x2 single-def V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V20 tmp11 [V20,T10] ( 2, 2 ) int -> x3 single-def V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref V10.Item1(offs=0x00) P-INDEP "field V10.Item1 (fldOffset=0x0)" ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref V10.Item2(offs=0x04) P-INDEP "field V10.Item2 (fldOffset=0x4)" ;* V23 tmp14 [V23,T15] ( 0, 0 ) byref -> zero-ref single-def V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref V17.Item1(offs=0x00) P-INDEP "field V17.Item1 (fldOffset=0x0)" ; V26 tmp17 [V26,T05] ( 2, 8 ) int -> x3 V17.Item2(offs=0x04) P-INDEP "field V17.Item2 (fldOffset=0x4)" ; V27 tmp18 [V27,T14] ( 2, 2 ) long -> x2 "Cast away GC" ; V28 rat0 [V28,T12] ( 3, 3 ) int -> x6 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 16 G_M40505_IG01: stp fp, lr, [sp,#-32]! mov fp, sp str xzr, [fp,#16] // [V06 loc2] ;; bbWeight=1 PerfScore 2.50 G_M40505_IG02: mov w5, w0 mov w6, #1 movz w7, #0xd1ffab1e movk w7, #1 LSL #16 cmp w5, w7 blo G_M40505_IG04 ;; bbWeight=1 PerfScore 3.50 G_M40505_IG03: movz w5, #0xd1ffab1e movk w5, #0xd1ffab1e LSL #16 umull x6, w0, w5 lsr x6, x6, #32 sub w5, w0, w6 lsr w5, w5, #1 add w5, w5, w6 lsr w5, w5, #16 mov w6, #6 ;; bbWeight=0.50 PerfScore 3.75 G_M40505_IG04: cmp w5, #10 blo G_M40505_IG09 ;; bbWeight=1 PerfScore 1.50 G_M40505_IG05: cmp w5, #100 bhs G_M40505_IG06 add w6, w6, #1 b G_M40505_IG09 ;; bbWeight=0.50 PerfScore 1.50 G_M40505_IG06: cmp w5, #0xd1ffab1e bhs G_M40505_IG07 add w6, w6, #2 b G_M40505_IG09 ;; bbWeight=0.50 PerfScore 1.50 G_M40505_IG07: mov w7, #0xd1ffab1e cmp w5, w7 bhs G_M40505_IG08 add w6, w6, #3 b G_M40505_IG09 ;; bbWeight=0.50 PerfScore 1.75 G_M40505_IG08: add w6, w6, #4 ;; bbWeight=0.50 PerfScore 0.25 G_M40505_IG09: cmp w1, w6 bge G_M40505_IG11 ;; bbWeight=1 PerfScore 1.50 G_M40505_IG10: b G_M40505_IG12 ;; bbWeight=0.50 PerfScore 0.50 G_M40505_IG11: mov w6, w1 ;; bbWeight=0.50 PerfScore 0.25 G_M40505_IG12: cmp w6, w3 ble G_M40505_IG15 ;; bbWeight=1 PerfScore 1.50 G_M40505_IG13: str wzr, [x4] mov w0, #0 ;; bbWeight=0.50 PerfScore 0.75 G_M40505_IG14: ldp fp, lr, [sp],#32 ret lr ;; bbWeight=0.50 PerfScore 1.00 G_M40505_IG15: str w6, [x4] str x2, [fp,#16] // [V06 loc2] sxtw x3, w6 lsl x3, x3, #1 add x2, x2, x3 str w1, [fp,#24] // [V01 arg1] cmp w1, #1 bgt G_M40505_IG18 ;; bbWeight=0.50 PerfScore 3.25 G_M40505_IG16: movz w1, #0xd1ffab1e movk w1, #0xd1ffab1e LSL #16 umull x1, w0, w1 lsr x1, x1, #32 lsr w1, w1, #3 mov x3, #5 mul w3, w1, w3 lsl w3, w3, #1 sub w3, w0, w3 mov w0, w1 sub x2, x2, #2 add w1, w3, #48 strh w1, [x2] cbnz w0, G_M40505_IG16 ;; bbWeight=4 PerfScore 50.00 G_M40505_IG17: b G_M40505_IG19 ;; bbWeight=0.50 PerfScore 0.50 G_M40505_IG18: str w0, [fp,#28] // [V00 arg0] mov x0, x2 ldr w1, [fp,#28] // [V00 arg0] ldr w2, [fp,#24] // [V01 arg1] bl Number:UInt32ToDecChars(long,int,int):long ;; bbWeight=0.50 PerfScore 3.25 G_M40505_IG19: str xzr, [fp,#16] // [V06 loc2] mov w0, #1 ;; bbWeight=0.50 PerfScore 0.75 G_M40505_IG20: ldp fp, lr, [sp],#32 ret lr ;; bbWeight=0.50 PerfScore 1.00 G_M40505_IG21: bl CORINFO_HELP_THROWDIVZERO bkpt ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 312, prolog size 12, PerfScore 111.70, instruction count 78, allocated bytes for code 312 (MethodHash=d74a61c6) for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool ; ============================================================
수정본
파일 열기
; Assembly listing for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool ; Emitting BLENDED_CODE for generic ARM64 CPU - Windows ; optimized code ; fp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; invoked as altjit ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 9, 20 ) int -> [fp+1CH] ; V01 arg1 [V01,T07] ( 6, 4.50) int -> [fp+18H] single-def ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def ; V03 arg3 [V03,T08] ( 4, 3 ) byref -> x4 single-def ; V04 loc0 [V04,T11] ( 4, 3 ) int -> x6 ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc2 [V06 ] ( 2, 1 ) byref -> [fp+10H] must-init pinned ; V07 loc3 [V07,T02] ( 5, 13 ) long -> x2 ;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref ;# V09 OutArgs [V09 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" ; V11 tmp2 [V11,T01] ( 2, 16 ) long -> x2 "dup spill" ; V12 tmp3 [V12,T06] ( 12, 7 ) int -> x6 "Inline stloc first use temp" ; V13 tmp4 [V13,T04] ( 7, 10 ) int -> x5 "Inlining Arg" ; V14 tmp5 [V14,T12] ( 3, 2 ) int -> x6 "Inline return value spill temp" ;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V16 tmp7 [V16,T03] ( 3, 12 ) int -> x1 "Inline stloc first use temp" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "NewObj constructor temp" ;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V19 tmp10 [V19,T09] ( 3, 2 ) byref -> x2 single-def V02._pointer(offs=0x00) P-INDEP "field V02._pointer (fldOffset=0x0)" ; V20 tmp11 [V20,T10] ( 2, 2 ) int -> x3 single-def V02._length(offs=0x08) P-INDEP "field V02._length (fldOffset=0x8)" ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref V10.Item1(offs=0x00) P-INDEP "field V10.Item1 (fldOffset=0x0)" ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref V10.Item2(offs=0x04) P-INDEP "field V10.Item2 (fldOffset=0x4)" ;* V23 tmp14 [V23,T14] ( 0, 0 ) byref -> zero-ref single-def V15._pointer(offs=0x00) P-INDEP "field V15._pointer (fldOffset=0x0)" ;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)" ;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref V17.Item1(offs=0x00) P-INDEP "field V17.Item1 (fldOffset=0x0)" ; V26 tmp17 [V26,T05] ( 2, 8 ) int -> x3 V17.Item2(offs=0x04) P-INDEP "field V17.Item2 (fldOffset=0x4)" ; V27 tmp18 [V27,T13] ( 2, 2 ) long -> x2 "Cast away GC" ; ; Lcl frame size = 16 G_M40505_IG01: stp fp, lr, [sp,#-32]! mov fp, sp str xzr, [fp,#16] // [V06 loc2] ;; bbWeight=1 PerfScore 2.50 G_M40505_IG02: mov w5, w0 mov w6, #1 movz w7, #0xd1ffab1e movk w7, #1 LSL #16 cmp w5, w7 blo G_M40505_IG04 ;; bbWeight=1 PerfScore 3.50 G_M40505_IG03: movz x5, #0xd1ffab1e movk x5, #0xd1ffab1e LSL #16 movk x5, #0xd1ffab1e LSL #32 mov w6, w0 umulh x5, x6, x5 mov w6, #6 ;; bbWeight=0.50 PerfScore 3.75 G_M40505_IG04: cmp w5, #10 blo G_M40505_IG09 ;; bbWeight=1 PerfScore 1.50 G_M40505_IG05: cmp w5, #100 bhs G_M40505_IG06 add w6, w6, #1 b G_M40505_IG09 ;; bbWeight=0.50 PerfScore 1.50 G_M40505_IG06: cmp w5, #0xd1ffab1e bhs G_M40505_IG07 add w6, w6, #2 b G_M40505_IG09 ;; bbWeight=0.50 PerfScore 1.50 G_M40505_IG07: mov w7, #0xd1ffab1e cmp w5, w7 bhs G_M40505_IG08 add w6, w6, #3 b G_M40505_IG09 ;; bbWeight=0.50 PerfScore 1.75 G_M40505_IG08: add w6, w6, #4 ;; bbWeight=0.50 PerfScore 0.25 G_M40505_IG09: cmp w1, w6 bge G_M40505_IG11 ;; bbWeight=1 PerfScore 1.50 G_M40505_IG10: b G_M40505_IG12 ;; bbWeight=0.50 PerfScore 0.50 G_M40505_IG11: mov w6, w1 ;; bbWeight=0.50 PerfScore 0.25 G_M40505_IG12: cmp w6, w3 ble G_M40505_IG15 ;; bbWeight=1 PerfScore 1.50 G_M40505_IG13: str wzr, [x4] mov w0, #0 ;; bbWeight=0.50 PerfScore 0.75 G_M40505_IG14: ldp fp, lr, [sp],#32 ret lr ;; bbWeight=0.50 PerfScore 1.00 G_M40505_IG15: str w6, [x4] str x2, [fp,#16] // [V06 loc2] sxtw x3, w6 lsl x3, x3, #1 add x2, x2, x3 str w1, [fp,#24] // [V01 arg1] cmp w1, #1 bgt G_M40505_IG18 ;; bbWeight=0.50 PerfScore 3.25 G_M40505_IG16: movz w1, #0xd1ffab1e movk w1, #0xd1ffab1e LSL #16 umull x1, w0, w1 lsr x1, x1, #35 mov x3, #5 mul w3, w1, w3 lsl w3, w3, #1 sub w3, w0, w3 mov w0, w1 sub x2, x2, #2 add w1, w3, #48 strh w1, [x2] cbnz w0, G_M40505_IG16 ;; bbWeight=4 PerfScore 46.00 G_M40505_IG17: b G_M40505_IG19 ;; bbWeight=0.50 PerfScore 0.50 G_M40505_IG18: str w0, [fp,#28] // [V00 arg0] mov x0, x2 ldr w1, [fp,#28] // [V00 arg0] ldr w2, [fp,#24] // [V01 arg1] bl Number:UInt32ToDecChars(long,int,int):long ;; bbWeight=0.50 PerfScore 3.25 G_M40505_IG19: str xzr, [fp,#16] // [V06 loc2] mov w0, #1 ;; bbWeight=0.50 PerfScore 0.75 G_M40505_IG20: ldp fp, lr, [sp],#32 ret lr ;; bbWeight=0.50 PerfScore 1.00 G_M40505_IG21: bl CORINFO_HELP_THROWDIVZERO bkpt ;; bbWeight=0 PerfScore 0.00 ; Total bytes of code 296, prolog size 12, PerfScore 106.10, instruction count 74, allocated bytes for code 296 (MethodHash=d74a61c6) for method Number:TryUInt32ToDecStr(int,int,Span`1,byref):bool ; ============================================================
비교하기