Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
即時編輯器
隱藏空白變更
摺疊未變更行
關閉換行
檢視
拆分
統一
比對精度
智能
單詞
字符
文字樣式
變更外觀
語法突出顯示
選擇語法
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
Untitled Diff
建立於
5 年前
差異永不過期
清除
匯出
分享
解釋
64 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
196 行
全部複製
31 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
179 行
全部複製
; Assembly listing for method System.SpanHelpers:Fill(byref,long,int)
; Assembly listing for method System.SpanHelpers:Fill(byref,long,int)
; Emitting BLENDED_CODE for generic ARM64 CPU - Unix
; Emitting BLENDED_CODE for generic ARM64 CPU - Unix
; ReadyToRun compilation
; ReadyToRun compilation
; optimized code
; optimized code
; fp based frame
; fp based frame
; fully interruptible
; fully interruptible
; No matching PGO data
; No matching PGO data
; 0 inlinees with PGO data; 43 single block inlinees; 1 inlinees without PGO data
; 0 inlinees with PGO data; 43 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T00] ( 18, 38 ) byref -> x0 single-def
; V00 arg0 [V00,T00] ( 18, 38 ) byref -> x0 single-def
; V01 arg1 [V01,T07] ( 10, 6.50) long -> x1 single-def
; V01 arg1 [V01,T07] ( 10, 6.50) long -> x1 single-def
; V02 arg2 [V02,T01] ( 18, 38 ) int -> x2 single-def
; V02 arg2 [V02,T01] ( 18, 38 ) int -> x2 single-def
; V03 loc0 [V03,T04] ( 12, 20 ) long -> x3
; V03 loc0 [V03,T04] ( 12, 20 ) long -> x3
; V04 loc1 [V04,T13] ( 2, 1 ) int -> x2 ld-addr-op
; V04 loc1 [V04,T13] ( 2, 1 ) int -> x2 ld-addr-op
; V05 loc2 [V05,T15] ( 5, 9.50) simd16 -> d16 HFA(simd16) ld-addr-op
; V05 loc2 [V05,T15] ( 5, 9.50) simd16 -> d16 HFA(simd16) ld-addr-op
; V06 loc3 [V06,T06] ( 5, 9.50) byref -> x0 single-def
; V06 loc3 [V06,T06] ( 5, 9.50) byref -> x0 single-def
; V07 loc4 [V07,T11] ( 4, 2 ) long -> x2
; V07 loc4 [V07,T11] ( 4, 2 ) long -> x2
; V08 loc5 [V08,T08] ( 2, 4.50) long -> x3
; V08 loc5 [V08,T08] ( 2, 4.50) long -> x3
; V09 loc6 [V09,T03] ( 7, 21 ) long -> x4
; V09 loc6 [V09,T03] ( 7, 21 ) long -> x4
;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
; V11 loc8 [V11,T09] ( 2, 4.50) long -> x4
; V11 loc8 [V11,T09] ( 2, 4.50) long -> x4
;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
; V13 tmp1 [V13,T05] ( 2, 16 ) long -> x3 "dup spill"
; V13 tmp1 [V13,T05] ( 2, 16 ) long -> x3 "dup spill"
;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp"
;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp"
;* V15 tmp3 [V15 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
;* V15 tmp3 [V15 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
; V16 tmp4 [V16,T16] ( 2, 2 ) simd16 -> d16 HFA(simd16) "NewObj constructor temp"
; V16 tmp4 [V16,T16] ( 2, 2 ) simd16 -> d16 HFA(simd16) "NewObj constructor temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
;* V17 tmp5 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
;* V18 tmp6 [V18 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp"
;* V18 tmp6 [V18 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp"
;* V19 tmp7 [V19,T14] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
;* V19 tmp7 [V19,T14] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp14 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V26 tmp14 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp16 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp16 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp17 [V29 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V29 tmp17 [V29 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V31 tmp19 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V31 tmp19 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V32 tmp20 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V32 tmp20 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp22 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp22 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V36 tmp24 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V36 tmp24 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V37 tmp25 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V37 tmp25 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V41 cse0 [V41,T02] ( 9, 36 ) long -> x5 "CSE - aggressive"
; V41 cse0 [V41,T02] ( 9, 36 ) long -> x5 "CSE - aggressive"
; V42 cse1 [V42,T10] ( 5, 2.50) long -> x4 "CSE - moderate"
; V42 cse1 [V42,T10] ( 5, 2.50) long -> x4 "CSE - moderate"
; V43 cse2 [V43,T12] ( 3, 1.50) long -> x4 "CSE - moderate"
; V43 cse2 [V43,T12] ( 3, 1.50) long -> x4 "CSE - moderate"
;
;
; Lcl frame size = 0
; Lcl frame size = 0
G_M55887_IG01: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
G_M55887_IG01: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp,#-16]!
stp fp, lr, [sp,#-16]!
mov fp, sp
mov fp, sp
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M55887_IG02: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG02: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
; byrRegs +[x0]
cmp x1, #4
cmp x1, #4
blo G_M55887_IG08
blo G_M55887_IG08
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M55887_IG03: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG03: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
dup v16.4s, w2
dup v16.4s, w2
lsl x2, x1, #2
lsl x2, x1, #2
and x3, x2, #-32
and x3, x2, #-32
mov x4, xzr
mov x4, xzr
cmp x1, #8
cmp x1, #8
blo G_M55887_IG05
blo G_M55887_IG05
;; bbWeight=0.50 PerfScore 2.75
;; bbWeight=0.50 PerfScore 2.75
G_M55887_IG04: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG04: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
str q16, [x0, x4]
str q16, [x0, x4]
複製
已複製
複製
已複製
mov x1, #16
add x1, x4,
#16
add x1, x4,
x1
str q16, [x0, x1]
str q16, [x0, x1]
複製
已複製
複製
已複製
mov x1, #32
add x4, x4,
#32
add x4, x4,
x1
cmp x4, x3
cmp x4, x3
blo G_M55887_IG04
blo G_M55887_IG04
複製
已複製
複製
已複製
;; bbWeight=4 PerfScore
22
.00
;; bbWeight=4 PerfScore
18
.00
G_M55887_IG05: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG05: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
tbz w2, #4, G_M55887_IG06
tbz w2, #4, G_M55887_IG06
str q16, [x0, x4]
str q16, [x0, x4]
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M55887_IG06: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
G_M55887_IG06: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
複製
已複製
複製
已複製
movn x1, #15
sub
x1, x2,
#16
add
x1, x2,
x1
str q16, [x0, x1]
str q16, [x0, x1]
複製
已複製
複製
已複製
;; bbWeight=0.50 PerfScore
1.00
;; bbWeight=0.50 PerfScore
0.75
G_M55887_IG07: ; , epilog, nogc, extend
G_M55887_IG07: ; , epilog, nogc, extend
ldp fp, lr, [sp],#16
ldp fp, lr, [sp],#16
ret lr
ret lr
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M55887_IG08: ; gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
G_M55887_IG08: ; gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
mov x3, xzr
mov x3, xzr
cmp x1, #8
cmp x1, #8
blo G_M55887_IG10
blo G_M55887_IG10
and x4, x1, #-8
and x4, x1, #-8
;; bbWeight=0.50 PerfScore 1.25
;; bbWeight=0.50 PerfScore 1.25
G_M55887_IG09: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG09: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
lsl x5, x3, #2
lsl x5, x3, #2
str w2, [x0, x5]
str w2, [x0, x5]
複製
已複製
複製
已複製
mov x6, #4
add x6, x5,
#4
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
複製
已複製
複製
已複製
mov x6, #8
add x6, x5,
#8
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
複製
已複製
複製
已複製
mov x6, #12
add x6, x5,
#12
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
複製
已複製
複製
已複製
mov x6, #16
add x6, x5,
#16
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
複製
已複製
複製
已複製
mov x6, #20
add x6, x5,
#20
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
複製
已複製
複製
已複製
mov x6, #24
add x6, x5,
#24
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
複製
已複製
複製
已複製
mov x6, #28
add x5, x5,
#28
add x5, x5,
x6
str w2, [x0, x5]
str w2, [x0, x5]
複製
已複製
複製
已複製
mov x5, #8
add x3, x3,
#8
add x3, x3,
x5
cmp x3, x4
cmp x3, x4
blo G_M55887_IG09
blo G_M55887_IG09
複製
已複製
複製
已複製
;; bbWeight=4 PerfScore
74
.00
;; bbWeight=4 PerfScore
58
.00
G_M55887_IG10: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG10: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
tbz w1, #2, G_M55887_IG11
tbz w1, #2, G_M55887_IG11
lsl x4, x3, #2
lsl x4, x3, #2
str w2, [x0, x4]
str w2, [x0, x4]
複製
已複製
複製
已複製
mov x5, #4
add x5, x4,
#4
add x5, x4,
x5
str w2, [x0, x5]
str w2, [x0, x5]
複製
已複製
複製
已複製
mov x5, #8
add x5, x4,
#8
add x5, x4,
x5
str w2, [x0, x5]
str w2, [x0, x5]
複製
已複製
複製
已複製
mov x5, #12
add x4, x4,
#12
add x4, x4,
x5
str w2, [x0, x4]
str w2, [x0, x4]
複製
已複製
複製
已複製
mov x4, #4
add x3, x3,
#
4
add x3, x3,
x
4
;; bbWeight=0.50 PerfScore
4
.00
;; bbWeight=0.50 PerfScore
5
.00
G_M55887_IG11: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG11: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
tbz w1, #1, G_M55887_IG12
tbz w1, #1, G_M55887_IG12
lsl x4, x3, #2
lsl x4, x3, #2
str w2, [x0, x4]
str w2, [x0, x4]
複製
已複製
複製
已複製
mov x5, #4
add x4, x4,
#4
add x4, x4,
x5
str w2, [x0, x4]
str w2, [x0, x4]
複製
已複製
複製
已複製
mov x4, #2
add x3, x3,
#2
add x3, x3,
x4
;; bbWeight=0.50 PerfScore
2.50
;; bbWeight=0.50 PerfScore
3.00
G_M55887_IG12: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG12: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
tbz w1, #0, G_M55887_IG13
tbz w1, #0, G_M55887_IG13
lsl x1, x3, #2
lsl x1, x3, #2
str w2, [x0, x1]
str w2, [x0, x1]
;; bbWeight=0.50 PerfScore 1.50
;; bbWeight=0.50 PerfScore 1.50
G_M55887_IG13: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
G_M55887_IG13: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
; byrRegs -[x0]
ldp fp, lr, [sp],#16
ldp fp, lr, [sp],#16
ret lr
ret lr
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
複製
已複製
複製
已複製
; Total bytes of code
332
, prolog size 8, PerfScore
149.70
, instruction count
83
, allocated bytes for code
332
(MethodHash=f08325b0) for method System.SpanHelpers:Fill(byref,long,int)
; Total bytes of code
264
, prolog size 8, PerfScore
121.15
, instruction count
66
, allocated bytes for code
264
(MethodHash=f08325b0) for method System.SpanHelpers:Fill(byref,long,int)
; ============================================================
; ============================================================
Unwind Info:
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
Code Words : 1
Epilog Count : 2
Epilog Count : 2
E bit : 0
E bit : 0
X bit : 0
X bit : 0
Vers : 0
Vers : 0
複製
已複製
複製
已複製
Function Length :
83
(0x000
53
) Actual length =
332
(0x0001
4c
)
Function Length :
66
(0x000
42
) Actual length =
264
(0x0001
08
)
---- Epilog scopes ----
---- Epilog scopes ----
---- Scope 0
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
Epilog Start Index : 1 (0x01)
---- Scope 1
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
Epilog Start Index : 1 (0x01)
---- Unwind codes ----
---- Unwind codes ----
E1 set_fp; mov fp, sp
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
---- Epilog start at index 1 ----
81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
E4 end
E4 end
已保存差異
原始文本
開啟檔案
; Assembly listing for method System.SpanHelpers:Fill(byref,long,int) ; Emitting BLENDED_CODE for generic ARM64 CPU - Unix ; ReadyToRun compilation ; optimized code ; fp based frame ; fully interruptible ; No matching PGO data ; 0 inlinees with PGO data; 43 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 18, 38 ) byref -> x0 single-def ; V01 arg1 [V01,T07] ( 10, 6.50) long -> x1 single-def ; V02 arg2 [V02,T01] ( 18, 38 ) int -> x2 single-def ; V03 loc0 [V03,T04] ( 12, 20 ) long -> x3 ; V04 loc1 [V04,T13] ( 2, 1 ) int -> x2 ld-addr-op ; V05 loc2 [V05,T15] ( 5, 9.50) simd16 -> d16 HFA(simd16) ld-addr-op ; V06 loc3 [V06,T06] ( 5, 9.50) byref -> x0 single-def ; V07 loc4 [V07,T11] ( 4, 2 ) long -> x2 ; V08 loc5 [V08,T08] ( 2, 4.50) long -> x3 ; V09 loc6 [V09,T03] ( 7, 21 ) long -> x4 ;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ; V11 loc8 [V11,T09] ( 2, 4.50) long -> x4 ;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace" ; V13 tmp1 [V13,T05] ( 2, 16 ) long -> x3 "dup spill" ;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp" ;* V15 tmp3 [V15 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ; V16 tmp4 [V16,T16] ( 2, 2 ) simd16 -> d16 HFA(simd16) "NewObj constructor temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ;* V18 tmp6 [V18 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp" ;* V19 tmp7 [V19,T14] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp9 [V21 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V23 tmp11 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V24 tmp12 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp14 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V28 tmp16 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V29 tmp17 [V29 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V31 tmp19 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V32 tmp20 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V33 tmp21 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V34 tmp22 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V35 tmp23 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V36 tmp24 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V37 tmp25 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V38 tmp26 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V39 tmp27 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V40 tmp28 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V41 cse0 [V41,T02] ( 9, 36 ) long -> x5 "CSE - aggressive" ; V42 cse1 [V42,T10] ( 5, 2.50) long -> x4 "CSE - moderate" ; V43 cse2 [V43,T12] ( 3, 1.50) long -> x4 "CSE - moderate" ; ; Lcl frame size = 0 G_M55887_IG01: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp,#-16]! mov fp, sp ;; bbWeight=1 PerfScore 1.50 G_M55887_IG02: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] cmp x1, #4 blo G_M55887_IG08 ;; bbWeight=1 PerfScore 1.50 G_M55887_IG03: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz dup v16.4s, w2 lsl x2, x1, #2 and x3, x2, #-32 mov x4, xzr cmp x1, #8 blo G_M55887_IG05 ;; bbWeight=0.50 PerfScore 2.75 G_M55887_IG04: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz str q16, [x0, x4] mov x1, #16 add x1, x4, x1 str q16, [x0, x1] mov x1, #32 add x4, x4, x1 cmp x4, x3 blo G_M55887_IG04 ;; bbWeight=4 PerfScore 22.00 G_M55887_IG05: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w2, #4, G_M55887_IG06 str q16, [x0, x4] ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG06: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref movn x1, #15 add x1, x2, x1 str q16, [x0, x1] ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG07: ; , epilog, nogc, extend ldp fp, lr, [sp],#16 ret lr ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG08: ; gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz mov x3, xzr cmp x1, #8 blo G_M55887_IG10 and x4, x1, #-8 ;; bbWeight=0.50 PerfScore 1.25 G_M55887_IG09: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz lsl x5, x3, #2 str w2, [x0, x5] mov x6, #4 add x6, x5, x6 str w2, [x0, x6] mov x6, #8 add x6, x5, x6 str w2, [x0, x6] mov x6, #12 add x6, x5, x6 str w2, [x0, x6] mov x6, #16 add x6, x5, x6 str w2, [x0, x6] mov x6, #20 add x6, x5, x6 str w2, [x0, x6] mov x6, #24 add x6, x5, x6 str w2, [x0, x6] mov x6, #28 add x5, x5, x6 str w2, [x0, x5] mov x5, #8 add x3, x3, x5 cmp x3, x4 blo G_M55887_IG09 ;; bbWeight=4 PerfScore 74.00 G_M55887_IG10: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #2, G_M55887_IG11 lsl x4, x3, #2 str w2, [x0, x4] mov x5, #4 add x5, x4, x5 str w2, [x0, x5] mov x5, #8 add x5, x4, x5 str w2, [x0, x5] mov x5, #12 add x4, x4, x5 str w2, [x0, x4] mov x4, #4 add x3, x3, x4 ;; bbWeight=0.50 PerfScore 5.00 G_M55887_IG11: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #1, G_M55887_IG12 lsl x4, x3, #2 str w2, [x0, x4] mov x5, #4 add x4, x4, x5 str w2, [x0, x4] mov x4, #2 add x3, x3, x4 ;; bbWeight=0.50 PerfScore 3.00 G_M55887_IG12: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #0, G_M55887_IG13 lsl x1, x3, #2 str w2, [x0, x1] ;; bbWeight=0.50 PerfScore 1.50 G_M55887_IG13: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp],#16 ret lr ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 332, prolog size 8, PerfScore 149.70, instruction count 83, allocated bytes for code 332 (MethodHash=f08325b0) for method System.SpanHelpers:Fill(byref,long,int) ; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1 Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0 Function Length : 83 (0x00053) Actual length = 332 (0x00014c) ---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01) ---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01) ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]! E4 end E4 end
更改後文本
開啟檔案
; Assembly listing for method System.SpanHelpers:Fill(byref,long,int) ; Emitting BLENDED_CODE for generic ARM64 CPU - Unix ; ReadyToRun compilation ; optimized code ; fp based frame ; fully interruptible ; No matching PGO data ; 0 inlinees with PGO data; 43 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 18, 38 ) byref -> x0 single-def ; V01 arg1 [V01,T07] ( 10, 6.50) long -> x1 single-def ; V02 arg2 [V02,T01] ( 18, 38 ) int -> x2 single-def ; V03 loc0 [V03,T04] ( 12, 20 ) long -> x3 ; V04 loc1 [V04,T13] ( 2, 1 ) int -> x2 ld-addr-op ; V05 loc2 [V05,T15] ( 5, 9.50) simd16 -> d16 HFA(simd16) ld-addr-op ; V06 loc3 [V06,T06] ( 5, 9.50) byref -> x0 single-def ; V07 loc4 [V07,T11] ( 4, 2 ) long -> x2 ; V08 loc5 [V08,T08] ( 2, 4.50) long -> x3 ; V09 loc6 [V09,T03] ( 7, 21 ) long -> x4 ;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ; V11 loc8 [V11,T09] ( 2, 4.50) long -> x4 ;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace" ; V13 tmp1 [V13,T05] ( 2, 16 ) long -> x3 "dup spill" ;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp" ;* V15 tmp3 [V15 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ; V16 tmp4 [V16,T16] ( 2, 2 ) simd16 -> d16 HFA(simd16) "NewObj constructor temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ;* V18 tmp6 [V18 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp" ;* V19 tmp7 [V19,T14] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp" ;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp9 [V21 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V23 tmp11 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V24 tmp12 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp14 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V28 tmp16 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V29 tmp17 [V29 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V31 tmp19 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V32 tmp20 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V33 tmp21 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V34 tmp22 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V35 tmp23 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V36 tmp24 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V37 tmp25 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V38 tmp26 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V39 tmp27 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V40 tmp28 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V41 cse0 [V41,T02] ( 9, 36 ) long -> x5 "CSE - aggressive" ; V42 cse1 [V42,T10] ( 5, 2.50) long -> x4 "CSE - moderate" ; V43 cse2 [V43,T12] ( 3, 1.50) long -> x4 "CSE - moderate" ; ; Lcl frame size = 0 G_M55887_IG01: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp,#-16]! mov fp, sp ;; bbWeight=1 PerfScore 1.50 G_M55887_IG02: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] cmp x1, #4 blo G_M55887_IG08 ;; bbWeight=1 PerfScore 1.50 G_M55887_IG03: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz dup v16.4s, w2 lsl x2, x1, #2 and x3, x2, #-32 mov x4, xzr cmp x1, #8 blo G_M55887_IG05 ;; bbWeight=0.50 PerfScore 2.75 G_M55887_IG04: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz str q16, [x0, x4] add x1, x4, #16 str q16, [x0, x1] add x4, x4, #32 cmp x4, x3 blo G_M55887_IG04 ;; bbWeight=4 PerfScore 18.00 G_M55887_IG05: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w2, #4, G_M55887_IG06 str q16, [x0, x4] ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG06: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref sub x1, x2, #16 str q16, [x0, x1] ;; bbWeight=0.50 PerfScore 0.75 G_M55887_IG07: ; , epilog, nogc, extend ldp fp, lr, [sp],#16 ret lr ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG08: ; gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz mov x3, xzr cmp x1, #8 blo G_M55887_IG10 and x4, x1, #-8 ;; bbWeight=0.50 PerfScore 1.25 G_M55887_IG09: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz lsl x5, x3, #2 str w2, [x0, x5] add x6, x5, #4 str w2, [x0, x6] add x6, x5, #8 str w2, [x0, x6] add x6, x5, #12 str w2, [x0, x6] add x6, x5, #16 str w2, [x0, x6] add x6, x5, #20 str w2, [x0, x6] add x6, x5, #24 str w2, [x0, x6] add x5, x5, #28 str w2, [x0, x5] add x3, x3, #8 cmp x3, x4 blo G_M55887_IG09 ;; bbWeight=4 PerfScore 58.00 G_M55887_IG10: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #2, G_M55887_IG11 lsl x4, x3, #2 str w2, [x0, x4] add x5, x4, #4 str w2, [x0, x5] add x5, x4, #8 str w2, [x0, x5] add x4, x4, #12 str w2, [x0, x4] add x3, x3, #4 ;; bbWeight=0.50 PerfScore 4.00 G_M55887_IG11: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #1, G_M55887_IG12 lsl x4, x3, #2 str w2, [x0, x4] add x4, x4, #4 str w2, [x0, x4] add x3, x3, #2 ;; bbWeight=0.50 PerfScore 2.50 G_M55887_IG12: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #0, G_M55887_IG13 lsl x1, x3, #2 str w2, [x0, x1] ;; bbWeight=0.50 PerfScore 1.50 G_M55887_IG13: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp],#16 ret lr ;; bbWeight=0.50 PerfScore 1.00 ; Total bytes of code 264, prolog size 8, PerfScore 121.15, instruction count 66, allocated bytes for code 264 (MethodHash=f08325b0) for method System.SpanHelpers:Fill(byref,long,int) ; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1 Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0 Function Length : 66 (0x00042) Actual length = 264 (0x000108) ---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01) ---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01) ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]! E4 end E4 end
尋找差異