Skip to content

Commit bc9c973

Browse files
committed
update defer
1 parent cc0eaf2 commit bc9c973

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

1.14/defer.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,8 @@ FUNCTION END, FLAG CHECKS, 这里要检查上面设置的所有的 open coded de
176176
0x02b7 00695 (open-coded-defer.go:31) ADDQ $352, SP
177177
0x02be 00702 (open-coded-defer.go:31) RET
178178
179-
DEFER 逻辑执行部分:
179+
DEFER 逻辑执行部分
180+
// defer fmt.Println("6"):
180181
0x02bf 00703 (open-coded-defer.go:31) ANDL $-2, DX
181182
0x02c2 00706 (open-coded-defer.go:31) MOVB DL, ""..autotmp_24+55(SP)
182183
0x02c6 00710 (open-coded-defer.go:31) MOVQ ""..autotmp_26+320(SP), AX
@@ -188,6 +189,7 @@ DEFER 逻辑执行部分:
188189
0x02ec 00748 (open-coded-defer.go:31) CALL fmt.Println(SB)
189190
0x02f1 00753 (open-coded-defer.go:31) JMP 687
190191
192+
// defer fmt.Println("5"):
191193
0x02f3 00755 (open-coded-defer.go:31) ANDL $-3, DX
192194
0x02f6 00758 (open-coded-defer.go:31) MOVB DL, ""..autotmp_37+54(SP)
193195
0x02fa 00762 (open-coded-defer.go:31) MOVB DL, ""..autotmp_24+55(SP)
@@ -201,6 +203,7 @@ DEFER 逻辑执行部分:
201203
0x0329 00809 (open-coded-defer.go:31) MOVBLZX ""..autotmp_37+54(SP), DX
202204
0x032e 00814 (open-coded-defer.go:31) JMP 682
203205
206+
// defer fmt.Println("4"):
204207
0x0333 00819 (open-coded-defer.go:31) ANDL $-5, DX
205208
0x0336 00822 (open-coded-defer.go:31) MOVB DL, ""..autotmp_37+54(SP)
206209
0x033a 00826 (open-coded-defer.go:31) MOVB DL, ""..autotmp_24+55(SP)
@@ -214,6 +217,7 @@ DEFER 逻辑执行部分:
214217
0x0369 00873 (open-coded-defer.go:31) MOVBLZX ""..autotmp_37+54(SP), DX
215218
0x036e 00878 (open-coded-defer.go:31) JMP 677
216219
220+
// defer fmt.Println("3"):
217221
0x0373 00883 (open-coded-defer.go:31) ANDL $-9, DX
218222
0x0376 00886 (open-coded-defer.go:31) MOVB DL, ""..autotmp_37+54(SP)
219223
0x037a 00890 (open-coded-defer.go:31) MOVB DL, ""..autotmp_24+55(SP)
@@ -227,6 +231,7 @@ DEFER 逻辑执行部分:
227231
0x03a9 00937 (open-coded-defer.go:31) MOVBLZX ""..autotmp_37+54(SP), DX
228232
0x03ae 00942 (open-coded-defer.go:31) JMP 668
229233
234+
// defer fmt.Println("2"):
230235
0x03b3 00947 (open-coded-defer.go:31) ANDL $-17, DX
231236
0x03b6 00950 (open-coded-defer.go:31) MOVB DL, ""..autotmp_37+54(SP)
232237
0x03ba 00954 (open-coded-defer.go:31) MOVB DL, ""..autotmp_24+55(SP)
@@ -240,6 +245,7 @@ DEFER 逻辑执行部分:
240245
0x03e9 01001 (open-coded-defer.go:31) MOVBLZX ""..autotmp_37+54(SP), DX
241246
0x03ee 01006 (open-coded-defer.go:31) JMP 659
242247
248+
// defer fmt.Println("1"):
243249
0x03f3 01011 (open-coded-defer.go:31) ANDL $-33, DX
244250
0x03f6 01014 (open-coded-defer.go:31) MOVB DL, ""..autotmp_37+54(SP)
245251
0x03fa 01018 (open-coded-defer.go:31) MOVB DL, ""..autotmp_24+55(SP)
@@ -258,10 +264,13 @@ DEFER 逻辑执行部分:
258264
0x043a 01082 (open-coded-defer.go:31) LEAQ fmt.Println·f(SB), CX
259265
0x0441 01089 (open-coded-defer.go:8) JMP 188
260266
267+
这段代码没什么用,因为不会跳过来的,可能是可以优化的一个点
261268
0x0446 01094 (open-coded-defer.go:8) CALL runtime.deferreturn(SB)
262269
0x044b 01099 (open-coded-defer.go:8) MOVQ 344(SP), BP
263270
0x0453 01107 (open-coded-defer.go:8) ADDQ $352, SP
264271
0x045a 01114 (open-coded-defer.go:8) RET
272+
273+
函数 prologue 栈检查的时候可能会跳到这里
265274
0x045b 01115 (open-coded-defer.go:8) NOP
266275
0x045b 01115 (open-coded-defer.go:7) CALL runtime.morestack_noctxt(SB)
267276
0x0460 01120 (open-coded-defer.go:7) JMP 0

0 commit comments

Comments
 (0)