{"id":10006999,"date":"2022-12-22T09:57:34","date_gmt":"2022-12-22T01:57:34","guid":{"rendered":"https:\/\/ityet.com\/?p=10006999"},"modified":"2022-12-22T09:57:34","modified_gmt":"2022-12-22T01:57:34","slug":"%e4%b8%80%e6%96%87%e8%af%bb%e6%87%82go%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8","status":"publish","type":"post","link":"https:\/\/itmax.cn\/?p=10006999","title":{"rendered":"\u4e00\u6587\u8bfb\u61c2Go\u51fd\u6570\u8c03\u7528"},"content":{"rendered":"<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132860\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\">\u5bfc\u8bfb\uff5cGo\u7684\u51fd\u6570\u8c03\u7528\u65f6\u53c2\u6570\u662f\u901a\u8fc7\u6808\u4f20\u9012\u8fd8\u662f\u5bc4\u5b58\u5668\u4f20\u9012\uff1f\u4f7f\u7528\u54ea\u4e2a\u7248\u672c\u7684Go\u8bed\u8a00\u80fd\u8ba9\u7a0b\u5e8f\u8fd0\u884c\u6027\u80fd\u63d0\u53475%\uff1f\u817e\u8baf\u540e\u53f0\u5f00\u53d1\u5de5\u7a0b\u5e08\u6d82\u660e\u5149\u5c06\u5e26\u4f60\u7531\u6d45\u5165\u6df1\u4e86\u89e3\u51fd\u6570\u8c03\u7528\uff0c\u5e76\u7ed3\u5408\u4e0d\u540c\u7248\u672cGo\u8fdb\u884c\u5b9e\u64cd\u89e3\u7b54\u3002<\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132861\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<p><strong>\u51fd\u6570\u8c03\u7528\u57fa\u672c\u6982\u5ff5<\/strong><\/p>\n<p><strong>1\uff09\u8c03\u7528\u8005caller\u4e0e\u88ab\u8c03\u7528\u8005callee<\/strong><\/p>\n<p>\u5982\u679c\u4e00\u4e2a\u51fd\u6570\u8c03\u7528\u53e6\u5916\u4e00\u4e2a\u51fd\u6570\uff0c\u90a3\u4e48\u8be5\u51fd\u6570\u88ab\u79f0\u4e3a\u8c03\u7528\u8005\u51fd\u6570\uff0c\u4e5f\u53eb\u505a<strong>caller<\/strong>\uff0c\u800c\u88ab\u8c03\u7528\u7684\u51fd\u6570\u79f0\u4e3a\u88ab\u8c03\u7528\u8005\u51fd\u6570\uff0c\u4e5f\u53eb\u505a<strong>callee<\/strong>\u3002\u6bd4\u5982\u51fd\u6570main\u4e2d\u8c03\u7528sum\u51fd\u6570\uff0c\u90a3\u4e48main\u5c31\u662fcaller\uff0c\u800csum\u51fd\u6570\u5c31\u662fcallee\u3002<\/p>\n<p><strong>2\uff09\u51fd\u6570\u6808\u548c\u51fd\u6570\u6808\u5e27<\/strong><\/p>\n<p>\u51fd\u6570\u6267\u884c\u65f6\u9700\u8981\u6709\u8db3\u591f\u7684\u5185\u5b58\u7a7a\u95f4\uff0c\u4f9b\u5b83\u5b58\u653e\u5c40\u90e8\u53d8\u91cf\u3001\u53c2\u6570\u7b49\u6570\u636e\uff0c\u8fd9\u6bb5\u7a7a\u95f4\u5bf9\u5e94\u5230\u865a\u62df\u5730\u5740\u7a7a\u95f4\u7684\u6808\uff0c\u4e5f\u5373\u51fd\u6570\u6808\u3002\u5728\u73b0\u4ee3\u4e3b\u6d41\u673a\u5668\u67b6\u6784\u4e0a\uff08\u4f8b\u5982x86\uff09\u4e2d\uff0c\u6808\u90fd\u662f\u5411\u4e0b\u751f\u957f\u7684\u3002\u6808\u7684\u589e\u957f\u65b9\u5411\u662f\u4ece\u9ad8\u4f4d\u5730\u5740\u5230\u5730\u4f4d\u5730\u5740\u5411\u4e0b\u8fdb\u884c\u589e\u957f\u3002<\/p>\n<p><strong>\u5206\u914d\u7ed9\u4e00\u4e2a\u4e2a\u51fd\u6570\u7684\u6808\u7a7a\u95f4\u88ab\u79f0\u4e3a\u201c\u51fd\u6570\u6808\u5e27\u201d<\/strong>\u3002Go\u8bed\u8a00\u4e2d\u51fd\u6570\u6808\u5e27\u5e03\u5c40\u662f\u8fd9\u6837\u7684\uff1a\u5148\u662f\u8c03\u7528\u8005caller\u6808\u57fa\u5730\u5740\uff0c\u7136\u540e\u662f\u8c03\u7528\u8005\u51fd\u6570caller\u7684\u5c40\u90e8\u53d8\u91cf\u3001\u63a5\u7740\u662f\u88ab\u8c03\u7528\u51fd\u6570callee\u7684\u8fd4\u56de\u503c\u548c\u53c2\u6570\u3002\u7136\u540e\u662f\u88ab\u8c03\u7528\u8005callee\u7684\u6808\u5e27\u3002<\/p>\n<p>\u6ce8\u610f\uff0c\u6808\u548c\u6808\u5e27\u662f\u4e0d\u4e00\u6837\u7684\u3002\u5728\u4e00\u4e2a\u51fd\u6570\u8c03\u7528\u94fe\u4e2d\uff0c\u6bd4\u5982\u51fd\u6570A\u8c03\u7528B\uff0cB\u8c03\u7528C\uff0c\u5219\u5728\u51fd\u6570\u6808\u4e0a\uff0cA\u7684\u6808\u5e27\u5728\u4e0a\u9762\uff0c\u4e0b\u9762\u4f9d\u6b21\u662fB\u3001C\u7684\u51fd\u6570\u6808\u5e27\u3002Go1.17\u4ee5\u524d\u7684\u7248\u672c\uff0c\u51fd\u6570\u6808\u7a7a\u95f4\u5e03\u5c40\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132862\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132863\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/><strong>\u51fd\u6570\u8c03\u7528\u5206\u6790<\/strong><\/p>\n<p>\u901a\u8fc7\u5728centos8\u4e0a\u5b89\u88c5gvm\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5207\u6362\u591a\u4e2aGo\u7248\u672c\u6d4b\u8bd5\u4e0d\u540c\u7248\u672c\u7684\u7279\u6027\u3002<\/p>\n<p>gvm\u5730\u5740\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=o%2B7EhNOdeLuur0ynpFhdBA%3D%3D.Q7g0cW6q1BoWIsL76QTN%2FSDePe27ZtEptKLyUk%2FS%2BIo%3D\" rel=\"nofollow\">https:\/\/github.com\/moovweb\/gvm<\/a><\/p>\n<p>\u6267\u884c\uff1a<\/p>\n<pre><code>gvm list<\/code><\/pre>\n<p>\u663e\u793agvm\u5b89\u88c5\u7684go\u7248\u672c\u5217\u8868\uff1a<\/p>\n<pre><code>    go1.14.2\n    go1.15.14\n    go1.15.7\n    go1.16.1\n    go1.16.13\n    go1.17.1\n    go1.18\n    go1.18.1\n    system<\/code><\/pre>\n<h3><strong>1\uff09Go15\u7248\u672c\u51fd\u6570\u8c03\u7528\u5206\u6790<\/strong><\/h3>\n<p>\u6267\u884c<\/p>\n<pre><code>gvm use go1.15.14<\/code><\/pre>\n<p>\u5207\u6362\u5230 go1.15.14\u7248\u672c\uff0c\u6211\u4eec\u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\u8c03\u7528\uff1a<\/p>\n<pre><code>package main\n\nfunc main() {\n    var r1, r2, r3, r4, r5, r6, r7 int64 = 1, 2, 3, 4, 5, 6, 7\n    A(r1, r2, r3, r4, r5, r6, r7)\n}\n\nfunc A(p1, p2, p3, p4, p5, p6, p7 int64) int64 {\n    return p1 + p2 + p3 + p4 + p5 + p6 + p7\n}<\/code><\/pre>\n<p>\u4f7f\u7528\u547d\u4ee4\u6253\u5370\u51famain.go\u6c47\u7f16\uff1a<\/p>\n<pre><code>GOOS=linux GOARCH=amd64 go tool compile -S -N -l main.go<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\u6211\u4eec\u5206\u6790main\u51fd\u6570\u7684\u6c47\u7f16\u4ee3\u7801\uff1a<\/p>\n<pre><code>&quot;&quot;.main STEXT size=190 args=0x0 locals=0x80\n        0x0000 00000 (main.go:3)        TEXT    &quot;&quot;.main(SB), ABIInternal, $128-0  #main\u51fd\u6570\u5b9a\u4e49, $128-0\uff1a128\u8868\u793a\u5c06\u5206\u914d\u7684main\u51fd\u6570\u7684\u6808\u5e27\u5927\u5c0f\uff1b0\u6307\u5b9a\u4e86\u8c03\u7528\u65b9\u4f20\u5165\u7684\u53c2\u6570\uff0c\u7531\u4e8emain\u662f\u6700\u4e0a\u5c42\u51fd\u6570\uff0c\u8fd9\u91cc\u6ca1\u6709\u5165\u53c2\n        0x0000 00000 (main.go:3)        MOVQ    (TLS), CX          # \u5c06\u672c\u5730\u7ebf\u7a0b\u5b58\u50a8\u4fe1\u606f\u4fdd\u5b58\u5230CX\u5bc4\u5b58\u5668\u4e2d\n        0x0009 00009 (main.go:3)        CMPQ    SP, 16(CX)         # \u6808\u6ea2\u51fa\u68c0\u6d4b\uff1a\u6bd4\u8f83\u5f53\u524d\u6808\u9876\u5730\u5740(SP\u5bc4\u5b58\u5668\u5b58\u653e\u7684)\u4e0e\u672c\u5730\u7ebf\u7a0b\u5b58\u50a8\u7684\u6808\u9876\u5730\u5740\n        0x000d 00013 (main.go:3)        PCDATA  $0, $-2            # PCDATA\uff0cFUNCDATA\u7528\u4e8eGo\u6c47\u7f16\u989d\u5916\u4fe1\u606f\uff0c\u4e0d\u5fc5\u5173\u6ce8\n        0x000d 00013 (main.go:3)        JLS     180                # \u5982\u679c\u5f53\u524d\u6808\u9876\u5730\u5740(SP\u5bc4\u5b58\u5668\u5b58\u653e\u7684)\u5c0f\u4e8e\u672c\u5730\u7ebf\u7a0b\u5b58\u50a8\u7684\u6808\u9876\u5730\u5740\uff0c\u5219\u8df3\u5230180\u5904\u4ee3\u7801\u5904\u8fdb\u884c\u6808\u5206\u88c2\u6269\u5bb9\u64cd\u4f5c\n        0x0013 00019 (main.go:3)        PCDATA  $0, $-1\n        0x0013 00019 (main.go:3)        ADDQ    $-128, SP          # \u4e3amain\u51fd\u6570\u6808\u5e27\u5206\u914d\u4e86128\u5b57\u8282\u7684\u7a7a\u95f4\uff0c\u6ce8\u610f\u6b64\u65f6\u7684SP\u5bc4\u5b58\u5668\u6307\u5411\uff0c\u4f1a\u5f80\u4e0b\u79fb\u52a8128\u4e2a\u5b57\u8282\n        0x0017 00023 (main.go:3)        MOVQ    BP, 120(SP)        # BP\u5bc4\u5b58\u5668\u5b58\u653e\u7684\u662fmain\u51fd\u6570caller\u7684\u57fa\u5740\uff0cmovq\u8fd9\u6761\u6307\u4ee4\u662f\u5c06main\u51fd\u6570caller\u7684\u57fa\u5740\u5165\u6808\u3002\n        0x001c 00028 (main.go:3)        LEAQ    120(SP), BP        # \u5c06main\u51fd\u6570\u7684\u57fa\u5740\u5b58\u653e\u5230\u5230BP\u5bc4\u5b58\u5668\n        0x0021 00033 (main.go:3)        FUNCDATA        $0, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0021 00033 (main.go:3)        FUNCDATA        $1, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0021 00033 (main.go:4)        MOVQ    $1, &quot;&quot;.r1+112(SP)  # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr1\u5165\u6808\n        0x002a 00042 (main.go:4)        MOVQ    $2, &quot;&quot;.r2+104(SP)  # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr2\u5165\u6808\n        0x0033 00051 (main.go:4)        MOVQ    $3, &quot;&quot;.r3+96(SP)   # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr3\u5165\u6808\n        0x003c 00060 (main.go:4)        MOVQ    $4, &quot;&quot;.r4+88(SP)   # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr4\u5165\u6808\n        0x0045 00069 (main.go:4)        MOVQ    $5, &quot;&quot;.r5+80(SP)   # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr5\u5165\u6808\n        0x004e 00078 (main.go:4)        MOVQ    $6, &quot;&quot;.r6+72(SP)   # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr6\u5165\u6808\n        0x0057 00087 (main.go:4)        MOVQ    $7, &quot;&quot;.r7+64(SP)   # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr7\u5165\u6808\n        0x0060 00096 (main.go:5)        MOVQ    &quot;&quot;.r1+112(SP), AX  # \u5c06\u5c40\u90e8\u53d8\u91cfr1\u4f20\u7ed9\u5bc4\u5b58\u5668AX\n        0x0065 00101 (main.go:5)        MOVQ    AX, (SP)           # \u5bc4\u5b58\u5668AX\u5c06\u5c40\u90e8\u53d8\u91cfr1\u52a0\u5165\u6808\u5934SP\u6307\u5411\u7684\u4f4d\u7f6e\n        0x0069 00105 (main.go:5)        MOVQ    &quot;&quot;.r2+104(SP), AX  # \u5c06\u5c40\u90e8\u53d8\u91cfr2\u4f20\u7ed9\u5bc4\u5b58\u5668AX\n        0x006e 00110 (main.go:5)        MOVQ    AX, 8(SP)          # \u5bc4\u5b58\u5668AX\u5c06\u5c40\u90e8\u53d8\u91cfr2\u52a0\u5165\u6808\u5934SP+8\u6307\u5411\u7684\u4f4d\u7f6e\n        0x0073 00115 (main.go:5)        MOVQ    &quot;&quot;.r3+96(SP), AX   # \u5c06\u5c40\u90e8\u53d8\u91cfr3\u4f20\u7ed9\u5bc4\u5b58\u5668AX\n        0x0078 00120 (main.go:5)        MOVQ    AX, 16(SP)         # \u5bc4\u5b58\u5668AX\u5c06\u5c40\u90e8\u53d8\u91cfr3\u52a0\u5165\u6808\u5934SP+16\u6307\u5411\u7684\u4f4d\u7f6e\n        0x007d 00125 (main.go:5)        MOVQ    &quot;&quot;.r4+88(SP), AX   # \u5c06\u5c40\u90e8\u53d8\u91cfr4\u4f20\u7ed9\u5bc4\u5b58\u5668AX \n        0x0082 00130 (main.go:5)        MOVQ    AX, 24(SP)         # \u5bc4\u5b58\u5668AX\u5c06\u5c40\u90e8\u53d8\u91cfr4\u52a0\u5165\u6808\u5934SP+24\u6307\u5411\u7684\u4f4d\u7f6e\n        0x0087 00135 (main.go:5)        MOVQ    &quot;&quot;.r5+80(SP), AX   # \u5c06\u5c40\u90e8\u53d8\u91cfr5\u4f20\u7ed9\u5bc4\u5b58\u5668AX \n        0x008c 00140 (main.go:5)        MOVQ    AX, 32(SP)         # \u5bc4\u5b58\u5668AX\u5c06\u5c40\u90e8\u53d8\u91cfr4\u52a0\u5165\u6808\u5934SP+32\u6307\u5411\u7684\u4f4d\u7f6e\n        0x0091 00145 (main.go:5)        MOVQ    &quot;&quot;.r6+72(SP), AX   # \u5c06\u5c40\u90e8\u53d8\u91cfr6\u4f20\u7ed9\u5bc4\u5b58\u5668AX \n        0x0096 00150 (main.go:5)        MOVQ    AX, 40(SP)         # \u5bc4\u5b58\u5668AX\u5c06\u5c40\u90e8\u53d8\u91cfr6\u52a0\u5165\u6808\u5934SP+40\u6307\u5411\u7684\u4f4d\u7f6e\n        0x009b 00155 (main.go:5)        MOVQ    &quot;&quot;.r7+64(SP), AX   # \u5c06\u5c40\u90e8\u53d8\u91cfr7\u4f20\u7ed9\u5bc4\u5b58\u5668AX \n        0x00a0 00160 (main.go:5)        MOVQ    AX, 48(SP)         # \u5bc4\u5b58\u5668AX\u5c06\u5c40\u90e8\u53d8\u91cfr7\u52a0\u5165\u6808\u5934SP+48\u6307\u5411\u7684\u4f4d\u7f6e\n        0x00a5 00165 (main.go:5)        PCDATA  $1, $0\n        0x00a5 00165 (main.go:5)        CALL    &quot;&quot;.A(SB)           # \u8c03\u7528 A\u51fd\u6570\n        0x00aa 00170 (main.go:6)        MOVQ    120(SP), BP        # \u5c06\u6808\u4e0a\u5b58\u50a8\u7684main\u51fd\u6570\u7684\u8c03\u7528\u65b9\u7684\u57fa\u5730\u5740\u6062\u590d\u5230BP  \n        0x00af 00175 (main.go:6)        SUBQ    $-128, SP          # \u589e\u52a0SP\u7684\u503c\uff0c\u6808\u6536\u7f29\uff0c\u6536\u56de\u5206\u914d\u7ed9main\u51fd\u6570\u6808\u5e27\u7684128\u5b57\u8282\u7a7a\u95f4\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00x00b3\u00a000179\u00a0(main.go:6)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RET<\/code><\/pre>\n<p>\u4ece\u6c47\u7f16\u4ee3\u7801\u7684\u6ce8\u91ca\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u6e05\u695a\u7684\u770b\u5230\uff0cmain\u51fd\u6570\u8c03\u7528A\u51fd\u6570\u7684\u5c40\u90e8\u53d8\u91cf\u3001\u5165\u53c2\u5728\u6808\u4e2d\u7684\u5b58\u50a8\u4f4d\u7f6e\u3002main\u51fd\u6570\u901a\u8fc7 ADDQ $-128, SP \u6307\u4ee4\uff0c\u4e00\u5171\u5728\u6808\u4e0a\u5206\u914d\u4e86128\u5b57\u8282\u7684\u5185\u5b58\u7a7a\u95f4\uff1a<\/p>\n<p>SP+64 ~ SP+112 \u6307\u5411\u768456\u4e2a\u6808\u7a7a\u95f4\uff0c\u5b58\u50a8\u7684\u662fr1 ~ r7\u8fd97\u4e2amain\u51fd\u6570\u7684\u5c40\u90e8\u53d8\u91cf\uff1bSP+56 \u8be5\u5730\u5740\u63a5\u6536\u51fd\u6570A\u7684\u8fd4\u56de\u503c\uff1bSP~SP+48 \u00a0\u6307\u5411\u768456\u4e2a\u5b57\u8282\u7a7a\u95f4\uff0c\u7528\u6765\u5b58\u653eA\u51fd\u6570\u7684 7 \u4e2a\u5165\u53c2\u3002<\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132864\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<p>\u7efc\u4e0a\uff0c\u5728Go1.15.14\u7248\u672c\u7684\u51fd\u6570\u8c03\u7528\u4e2d\uff1a<strong>\u53c2\u6570\u5b8c\u5168\u901a\u8fc7\u6808\u4f20\u9012\uff1b\u53c2\u6570\u5217\u8868\u4ece\u53f3\u81f3\u5de6\u4f9d\u6b21\u538b\u6808\u3002\u5f53\u7a0b\u5e8f\u51c6\u5907\u597d\u51fd\u6570\u7684\u5165\u53c2\u4e4b\u540e\uff0c\u4f1a\u8c03\u7528\u6c47\u7f16\u6307\u4ee4CALL &#8220;&#8221;.A(SB)\uff0c\u8fd9\u4e2a\u6307\u4ee4\u9996\u5148\u4f1a\u5c06 main \u7684\u8fd4\u56de\u5730\u5740 (8 bytes) \u5b58\u5165\u6808\u4e2d\uff0c\u7136\u540e\u6539\u53d8\u5f53\u524d\u7684\u6808\u6307\u9488 SP \u5e76\u6267\u884c A \u51fd\u6570\u7684\u6c47\u7f16\u6307\u4ee4<\/strong>\u3002\u6808\u7a7a\u95f4\u53d8\u4e3a\uff1a<\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132865\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<p>\u4e0b\u9762\u5206\u6790 A \u51fd\u6570\uff1a<\/p>\n<pre><code>&quot;&quot;.A STEXT nosplit size=50 args=0x40 locals=0x0\n        0x0000 00000 (main.go:8)        TEXT    &quot;&quot;.A(SB), NOSPLIT|ABIInternal, $0-64  #A\u51fd\u6570\u5b9a\u4e49, $0-64\uff1a0\u8868\u793a\u5c06\u5206\u914d\u7684A\u51fd\u6570\u7684\u6808\u5e27\u5927\u5c0f\uff1b64\u6307\u5b9a\u4e86\u8c03\u7528\u65b9\u4f20\u5165\u7684\u53c2\u6570\u548c\u51fd\u6570\u7684\u8fd4\u56de\u503c\u7684\u5927\u5c0f\uff0c\u5165\u53c27\u4e2a\uff0c\u8fd4\u56de\u503c1\u4e2a\uff0c\u90fd\u662f8\u5b57\u8282\uff0c\u517164\u5b57\u8282\n        0x0000 00000 (main.go:8)        FUNCDATA        $0, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0000 00000 (main.go:8)        FUNCDATA        $1, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0000 00000 (main.go:8)        MOVQ    $0, &quot;&quot;.~r7+64(SP)   # \u8fd9\u91cc SP+64\u5c31\u662f\u4e0a\u9762main\u6808\u7a7a\u95f4\u4e2d\u7528\u6765\u63a5\u6536\u8fd4\u56de\u503c\u7684\u5730\u5740\n        0x0009 00009 (main.go:9)        MOVQ    &quot;&quot;.p1+8(SP), AX     # A\u8fd4\u56de\u503c\u548cr1\u53c2\u6570\u6c42\u548c\u540e\uff0c\u653e\u5165AX\u5bc4\u5b58\u5668\n        0x000e 00014 (main.go:9)        ADDQ    &quot;&quot;.p2+16(SP), AX    # AX\u5bc4\u5b58\u5668\u7684\u503c\u518d\u548cr2\u53c2\u6570\u6c42\u548c\uff0c\u7ed3\u679c\u653e\u5165AX\n        0x0013 00019 (main.go:9)        ADDQ    &quot;&quot;.p3+24(SP), AX    # AX\u5bc4\u5b58\u5668\u7684\u503c\u518d\u548cr3\u53c2\u6570\u6c42\u548c\uff0c\u7ed3\u679c\u653e\u5165AX\n        0x0018 00024 (main.go:9)        ADDQ    &quot;&quot;.p4+32(SP), AX    # AX\u5bc4\u5b58\u5668\u7684\u503c\u518d\u548cr4\u53c2\u6570\u6c42\u548c\uff0c\u7ed3\u679c\u653e\u5165AX\n        0x001d 00029 (main.go:9)        ADDQ    &quot;&quot;.p5+40(SP), AX    # AX\u5bc4\u5b58\u5668\u7684\u503c\u518d\u548cr5\u53c2\u6570\u6c42\u548c\uff0c\u7ed3\u679c\u653e\u5165AX\n        0x0022 00034 (main.go:9)        ADDQ    &quot;&quot;.p6+48(SP), AX    # AX\u5bc4\u5b58\u5668\u7684\u503c\u518d\u548cr6\u53c2\u6570\u6c42\u548c\uff0c\u7ed3\u679c\u653e\u5165AX\n        0x0027 00039 (main.go:9)        ADDQ    &quot;&quot;.p7+56(SP), AX    # AX\u5bc4\u5b58\u5668\u7684\u503c\u518d\u548cr7\u53c2\u6570\u6c42\u548c\uff0c\u7ed3\u679c\u653e\u5165AX\n        0x002c 00044 (main.go:9)        MOVQ    AX, &quot;&quot;.~r7+64(SP)   # AX\u5bc4\u5b58\u5668\u7684\u503c \u5199\u56demain\u6808\u7a7a\u95f4\u4e2d\u7528\u6765\u63a5\u6536\u8fd4\u56de\u503c\u7684\u5730\u5740SP+64\u4e2d\n        0x0031 00049 (main.go:9)        RET<\/code><\/pre>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c&#8221;&#8221;.~r7+64(SP)\u662f\u4e0a\u56fe\u4e2d\uff0cmain\u51fd\u6570\u7528\u6765\u63a5\u6536A\u51fd\u6570\u8fd4\u56de\u503c\u7684\u5730\u5740SP+56\uff0c\u56e0\u4e3aCALL &#8220;&#8221;.A(SB)\u5c06main\u8fd4\u56de\u5730\u5740\u538b\u6808\u540e\uff0cSP\u5411\u4e0b\u79fb\u52a8\u4e868\u5b57\u8282\u3002<\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132866\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<p>\u4eceA\u51fd\u6570\u7684\u6c47\u7f16\u5206\u6790\uff0c\u53ef\u4ee5\u5f97\u5230\u7ed3\u8bba\uff1a<strong>Go1.17.1\u4e4b\u524d\u7248\u672c\uff0ccallee\u51fd\u6570\u8fd4\u56de\u503c\u901a\u8fc7caller\u6808\u4f20\u9012\uff1b\u5982\u679c\u6211\u4eec\u8ba9main\u63a5\u6536A\u51fd\u6570\u7684\u8fd4\u56de\u503c\uff0c\u4f1a\u53d1\u73b0callee\u7684\u8fd4\u56de\u503c\u4e5f\u662f\u901a\u8fc7caller\u7684\u6808\u7a7a\u95f4\u4f20\u9012\u3002<\/strong><\/p>\n<h3><strong>2\uff09Go17\u7248\u672c\u51fd\u6570\u8c03\u7528\u5206\u6790<\/strong><\/h3>\n<p>\u6267\u884c<\/p>\n<pre><code>gvm use go1.17.1<\/code><\/pre>\n<p>\u5207\u6362\u5230 go1.17.1\u7248\u672c\uff0c\u4fee\u6539main.go\u4ee3\u7801\u7ed3\u6784\u5982\u4e0b\uff1a<\/p>\n<pre><code>package main\n\nfunc main() {\n    var r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11 int64 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11\n    a, b := A(r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11)\n    c := a + b\n    print(c)\n}\n\nfunc A(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 int64) (int64, int64) {\n    return p1 + p2 + p3 + p4 + p5 + p6 + p7, p2 + p4 + p6 + p7 + p8 + p9 + p10 + p11  \n}<\/code><\/pre>\n<p>\u4f7f\u7528\u547d\u4ee4\u6253\u5370\u51famain.go\u6c47\u7f16\uff1a<\/p>\n<pre><code>GOOS=linux GOARCH=amd64 go tool compile -S -N -l main.go<\/code><\/pre>\n<p>\u5206\u6790main\u51fd\u6570\u7684\u6c47\u7f16\u4ee3\u7801\uff1a<\/p>\n<pre><code>&quot;&quot;.main STEXT size=362 args=0x0 locals=0xe0 funcid=0x0\n        0x0000 00000 (main.go:3)        TEXT    &quot;&quot;.main(SB), ABIInternal, $224-0    #main\u51fd\u6570\u5b9a\u4e49, $224-0\uff1a224\u8868\u793a\u5c06\u5206\u914d\u7684main\u51fd\u6570\u7684\u6808\u5e27\u5927\u5c0f\uff1b0\u6307\u5b9a\u4e86\u8c03\u7528\u65b9\u4f20\u5165\u7684\u53c2\u6570\uff0c\u7531\u4e8emain\u662f\u6700\u4e0a\u5c42\u51fd\u6570\uff0c\u8fd9\u91cc\u6ca1\u6709\u5165\u53c2\n        0x0000 00000 (main.go:3)        LEAQ    -96(SP), R12\n        0x0005 00005 (main.go:3)        CMPQ    R12, 16(R14)\n        0x0009 00009 (main.go:3)        PCDATA  $0, $-2\n        0x0009 00009 (main.go:3)        JLS     349\n        0x000f 00015 (main.go:3)        PCDATA  $0, $-1\n        0x000f 00015 (main.go:3)        SUBQ    $224, SP                     # \u4e3amain\u51fd\u6570\u6808\u5e27\u5206\u914d\u4e86224\u5b57\u8282\u7684\u7a7a\u95f4\uff0c\u6ce8\u610f\u6b64\u65f6\u7684SP\u5bc4\u5b58\u5668\u6307\u5411\uff0c\u4f1a\u5f80\u4e0b\u79fb\u52a8224\u4e2a\u5b57\u8282\n        0x0016 00022 (main.go:3)        MOVQ    BP, 216(SP)                  # BP\u5bc4\u5b58\u5668\u5b58\u653e\u7684\u662fmain\u51fd\u6570caller\u7684\u57fa\u5740\uff0cmovq\u8fd9\u6761\u6307\u4ee4\u662f\u5c06main\u51fd\u6570caller\u7684\u57fa\u5740\u5165\u6808\n        0x001e 00030 (main.go:3)        LEAQ    216(SP), BP                  # \u5c06main\u51fd\u6570\u7684\u57fa\u5740\u5b58\u653e\u5230\u5230BP\u5bc4\u5b58\u5668\n        0x0026 00038 (main.go:3)        FUNCDATA        $0, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0026 00038 (main.go:3)        FUNCDATA        $1, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0026 00038 (main.go:4)        MOVQ    $1, &quot;&quot;.r1+168(SP)            # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr1\u5165\u6808    \n        0x0032 00050 (main.go:4)        MOVQ    $2, &quot;&quot;.r2+144(SP)            # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr2\u5165\u6808\n        0x003e 00062 (main.go:4)        MOVQ    $3, &quot;&quot;.r3+136(SP)            # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr3\u5165\u6808\n        0x004a 00074 (main.go:4)        MOVQ    $4, &quot;&quot;.r4+128(SP)            # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr4\u5165\u6808\n        0x0056 00086 (main.go:4)        MOVQ    $5, &quot;&quot;.r5+120(SP)            # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr5\u5165\u6808\n        0x005f 00095 (main.go:4)        MOVQ    $6, &quot;&quot;.r6+112(SP)            # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr6\u5165\u6808\n        0x0068 00104 (main.go:4)        MOVQ    $7, &quot;&quot;.r7+104(SP)            # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr7\u5165\u6808\n        0x0071 00113 (main.go:4)        MOVQ    $8, &quot;&quot;.r8+96(SP)             # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr8\u5165\u6808 \n        0x007a 00122 (main.go:4)        MOVQ    $9, &quot;&quot;.r9+88(SP)             # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr9\u5165\u6808\n        0x0083 00131 (main.go:4)        MOVQ    $10, &quot;&quot;.r10+160(SP)          # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr10\u5165\u6808\n        0x008f 00143 (main.go:4)        MOVQ    $11, &quot;&quot;.r11+152(SP)          # main\u51fd\u6570\u5c40\u90e8\u53d8\u91cfr11\u5165\u6808\n        0x009b 00155 (main.go:5)        MOVQ    &quot;&quot;.r2+144(SP), BX            # \u5c06\u5c40\u90e8\u53d8\u91cfr2\u4f20\u7ed9\u5bc4\u5b58\u5668BX\n        0x00a3 00163 (main.go:5)        MOVQ    &quot;&quot;.r3+136(SP), CX            # \u5c06\u5c40\u90e8\u53d8\u91cfr3\u4f20\u7ed9\u5bc4\u5b58\u5668CX\n        0x00ab 00171 (main.go:5)        MOVQ    &quot;&quot;.r4+128(SP), DI            # \u5c06\u5c40\u90e8\u53d8\u91cfr4\u4f20\u7ed9\u5bc4\u5b58\u5668DI\n        0x00b3 00179 (main.go:5)        MOVQ    &quot;&quot;.r5+120(SP), SI            # \u5c06\u5c40\u90e8\u53d8\u91cfr5\u4f20\u7ed9\u5bc4\u5b58\u5668SI\n        0x00b8 00184 (main.go:5)        MOVQ    &quot;&quot;.r6+112(SP), R8            # \u5c06\u5c40\u90e8\u53d8\u91cfr6\u4f20\u7ed9\u5bc4\u5b58\u5668R8\n        0x00bd 00189 (main.go:5)        MOVQ    &quot;&quot;.r7+104(SP), R9            # \u5c06\u5c40\u90e8\u53d8\u91cfr7\u4f20\u7ed9\u5bc4\u5b58\u5668R9\n        0x00c2 00194 (main.go:5)        MOVQ    &quot;&quot;.r8+96(SP), R10            # \u5c06\u5c40\u90e8\u53d8\u91cfr8\u4f20\u7ed9\u5bc4\u5b58\u5668R10\n        0x00c7 00199 (main.go:5)        MOVQ    &quot;&quot;.r9+88(SP), R11            # \u5c06\u5c40\u90e8\u53d8\u91cfr9\u4f20\u7ed9\u5bc4\u5b58\u5668R11\n        0x00cc 00204 (main.go:5)        MOVQ    &quot;&quot;.r10+160(SP), DX           # \u5c06\u5c40\u90e8\u53d8\u91cfr10\u4f20\u7ed9\u5bc4\u5b58\u5668DX\n        0x00d4 00212 (main.go:5)        MOVQ    &quot;&quot;.r1+168(SP), AX            # \u5c06\u5c40\u90e8\u53d8\u91cfr1\u4f20\u7ed9\u5bc4\u5b58\u5668DX\n        0x00dc 00220 (main.go:5)        MOVQ    DX, (SP)                     # \u5c06\u5bc4\u5b58\u5668DX\u4fdd\u5b58\u7684r10\u4f20\u7ed9SP\u6307\u5411\u7684\u6808\u9876\n        0x00e0 00224 (main.go:5)        MOVQ    $11, 8(SP)                   # \u5c06\u53d8\u91cfr11\u4f20\u7ed9SP+8\n        0x00e9 00233 (main.go:5)        PCDATA  $1, $0\n        0x00e9 00233 (main.go:5)        CALL    &quot;&quot;.A(SB)                     # \u8c03\u7528 A \u51fd\u6570\n        0x00ee 00238 (main.go:5)        MOVQ    AX, &quot;&quot;..autotmp_14+208(SP)   # \u5c06\u5bc4\u5b58\u5668AX\u5b58\u7684\u51fd\u6570A\u7684\u7b2c\u4e00\u4e2a\u8fd4\u56de\u503ca\u8d4b\u503c\u7ed9SP+208\n        0x00f6 00246 (main.go:5)        MOVQ    BX, &quot;&quot;..autotmp_15+200(SP)   # \u5c06\u5bc4\u5b58\u5668BX\u5b58\u7684\u51fd\u6570A\u7684\u7b2c\u4e8c\u4e2a\u8fd4\u56de\u503cb\u8d4b\u503c\u7ed9SP+200\n        0x00fe 00254 (main.go:5)        MOVQ    &quot;&quot;..autotmp_14+208(SP), DX   # \u5c06SP+208\u4fdd\u5b58\u7684A\u51fd\u6570\u7b2c\u4e00\u4e2a\u8fd4\u56de\u503ca\u4f20\u7ed9\u5bc4\u5b58\u5668DX\n        0x0106 00262 (main.go:5)        MOVQ    DX, &quot;&quot;.a+192(SP)             # \u5c06A\u51fd\u6570\u7b2c\u4e00\u4e2a\u8fd4\u56de\u503ca\u901a\u8fc7\u5bc4\u5b58\u5668DX\u5165\u6808\u5230SP+192\n        0x010e 00270 (main.go:5)        MOVQ    &quot;&quot;..autotmp_15+200(SP), DX   # \u5c06SP+200\u4fdd\u5b58\u7684A\u51fd\u6570\u7b2c\u4e8c\u4e2a\u8fd4\u56de\u503cb\u4f20\u7ed9\u5bc4\u5b58\u5668DX\n        0x0116 00278 (main.go:5)        MOVQ    DX, &quot;&quot;.b+184(SP)             # \u5c06\u7b2c\u4e8c\u4e2a\u8fd4\u56de\u503cb\u901a\u8fc7\u5bc4\u5b58\u5668DX\u5165\u6808\u5230SP+184\n        0x011e 00286 (main.go:6)        MOVQ    &quot;&quot;.a+192(SP), DX             # \u5c06\u8fd4\u56de\u503ca\u4f20\u7ed9DX\u5bc4\u5b58\u5668\n        0x0126 00294 (main.go:6)        ADDQ    &quot;&quot;.b+184(SP), DX             # \u5c06a+b\u8d4b\u503c\u7ed9DX\u5bc4\u5b58\u5668\n        0x012e 00302 (main.go:6)        MOVQ    DX, &quot;&quot;.c+176(SP)             # \u5c06DX\u5bc4\u5b58\u5668\u7684\u503c\u5165\u6808\u5230SP+176\n        0x0136 00310 (main.go:7)        CALL    runtime.printlock(SB)        \n        0x013b 00315 (main.go:7)        MOVQ    &quot;&quot;.c+176(SP), AX             # \u5c06SP+176\u5b58\u50a8\u7684\u5165\u53c2c\u8d4b\u503c\u7ed9AX\n        0x0143 00323 (main.go:7)        CALL    runtime.printint(SB)         # \u8c03\u7528\u6253\u5370\u51fd\u6570\u6253\u5370c\n        0x0148 00328 (main.go:7)        CALL    runtime.printunlock(SB)\n        0x014d 00333 (main.go:8)        MOVQ    216(SP), BP\n        0x0155 00341 (main.go:8)        ADDQ    $224, SP\n        0x015c 00348 (main.go:8)        RET<\/code><\/pre>\n<p>\u901a\u8fc7\u4e0a\u9762\u6c47\u7f16\u4ee3\u7801\u7684\u6ce8\u91ca\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff1amain\u51fd\u6570\u8c03\u7528A\u51fd\u6570\u7684\u53c2\u6570\u4e2a\u6570\u4e3a11\u4e2a\uff0c\u5176\u4e2d\u524d 9 \u4e2a\u53c2\u6570\u5206\u522b\u662f\u901a\u8fc7\u5bc4\u5b58\u5668 AX\u3001BX\u3001CX\u3001DI\u3001SI\u3001R8\u3001R9\u3001R10\u3001R11\u4f20\u9012\uff0c\u540e\u9762\u4e24\u4e2a\u901a\u8fc7\u6808\u9876\u7684SP\uff0cSP+8\u5730\u5740\u4f20\u9012\u3002<\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132867\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<p>\u4e0b\u9762\u770b A \u51fd\u6570\u5728Go1.17.1\u7684\u6c47\u7f16\u4ee3\u7801\uff1a<\/p>\n<pre><code>&quot;&quot;.A STEXT nosplit size=175 args=0x58 locals=0x18 funcid=0x0\n        0x0000 00000 (main.go:10)       TEXT    &quot;&quot;.A(SB), NOSPLIT|ABIInternal, $24-88\n        0x0000 00000 (main.go:10)       SUBQ    $24, SP                        # \u4e3aA\u51fd\u6570\u6808\u5e27\u5206\u914d\u4e8624\u5b57\u8282\u7684\u7a7a\u95f4\n        0x0004 00004 (main.go:10)       MOVQ    BP, 16(SP)\n        0x0009 00009 (main.go:10)       LEAQ    16(SP), BP\n        0x000e 00014 (main.go:10)       FUNCDATA        $0, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x000e 00014 (main.go:10)       FUNCDATA        $1, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x000e 00014 (main.go:10)       FUNCDATA        $5, &quot;&quot;.A.arginfo1(SB)\n        0x000e 00014 (main.go:10)       MOVQ    AX, &quot;&quot;.p1+48(SP)               # \u5bc4\u5b58\u5668AX\u5b58\u50a8\u7684r1\u8d4b\u503c\u7ed9SP+48    \n        0x0013 00019 (main.go:10)       MOVQ    BX, &quot;&quot;.p2+56(SP)               # \u5bc4\u5b58\u5668BX\u5b58\u50a8\u7684r2\u8d4b\u503c\u7ed9SP+56\n        0x0018 00024 (main.go:10)       MOVQ    CX, &quot;&quot;.p3+64(SP)               # \u5bc4\u5b58\u5668CX\u5b58\u50a8\u7684r3\u8d4b\u503c\u7ed9SP+64\n        0x001d 00029 (main.go:10)       MOVQ    DI, &quot;&quot;.p4+72(SP)               # \u5bc4\u5b58\u5668DI\u5b58\u50a8\u7684r4\u8d4b\u503c\u7ed9SP+72\n        0x0022 00034 (main.go:10)       MOVQ    SI, &quot;&quot;.p5+80(SP)               # \u5bc4\u5b58\u5668SI\u5b58\u50a8\u7684r5\u8d4b\u503c\u7ed9SP+80\n        0x0027 00039 (main.go:10)       MOVQ    R8, &quot;&quot;.p6+88(SP)               # \u5bc4\u5b58\u5668R8\u5b58\u50a8\u7684r6\u8d4b\u503c\u7ed9SP+88\n        0x002c 00044 (main.go:10)       MOVQ    R9, &quot;&quot;.p7+96(SP)               # \u5bc4\u5b58\u5668R9\u5b58\u50a8\u7684r7\u8d4b\u503c\u7ed9SP+96\n        0x0031 00049 (main.go:10)       MOVQ    R10, &quot;&quot;.p8+104(SP)             # \u5bc4\u5b58\u5668R10\u5b58\u50a8\u7684r8\u8d4b\u503c\u7ed9SP+104\n        0x0036 00054 (main.go:10)       MOVQ    R11, &quot;&quot;.p9+112(SP)             # \u5bc4\u5b58\u5668R11\u5b58\u50a8\u7684r9\u8d4b\u503c\u7ed9SP+112\n        0x003b 00059 (main.go:10)       MOVQ    $0, &quot;&quot;.~r11+8(SP)              # \u521d\u59cb\u5316\u7b2c\u4e00\u4e2a\u8fd4\u56de\u503ca\u5b58\u653e\u5730\u5740SP+8\u4e3a0\n        0x0044 00068 (main.go:10)       MOVQ    $0, &quot;&quot;.~r12(SP)                # \u521d\u59cb\u5316\u7b2c\u4e8c\u4e2a\u8fd4\u56de\u503cb\u5b58\u653e\u5730\u5740SP\u4e3a0\n        0x004c 00076 (main.go:11)       MOVQ    &quot;&quot;.p1+48(SP), CX               # SP+48\u5b58\u50a8\u7684r1\u8d4b\u503c\u7ed9CX\u5bc4\u5b58\u5668\n        0x0051 00081 (main.go:11)       ADDQ    &quot;&quot;.p2+56(SP), CX               # CX+r2\u8d4b\u503c\u7ed9CX\u5bc4\u5b58\u5668\n        0x0056 00086 (main.go:11)       ADDQ    &quot;&quot;.p3+64(SP), CX               # CX+r3\u8d4b\u503c\u7ed9CX\u5bc4\u5b58\u5668\n        0x005b 00091 (main.go:11)       ADDQ    &quot;&quot;.p4+72(SP), CX               # CX+r4\u8d4b\u503c\u7ed9CX\u5bc4\u5b58\u5668\n        0x0060 00096 (main.go:11)       ADDQ    &quot;&quot;.p5+80(SP), CX               # CX+r5\u8d4b\u503c\u7ed9CX\u5bc4\u5b58\u5668\n        0x0065 00101 (main.go:11)       ADDQ    &quot;&quot;.p6+88(SP), CX               # CX+r6\u8d4b\u503c\u7ed9CX\u5bc4\u5b58\u5668\n        0x006a 00106 (main.go:11)       ADDQ    &quot;&quot;.p7+96(SP), CX               # CX+r7\u8d4b\u503c\u7ed9CX\u5bc4\u5b58\u5668\n        0x006f 00111 (main.go:11)       MOVQ    CX, &quot;&quot;.~r11+8(SP)              # CX\u5bc4\u5b58\u5668\u8d4b\u503c\u7ed9\u7b2c\u4e00\u4e2a\u8fd4\u56de\u503c\u5b58\u653e\u5730\u5740SP+8\n        0x0074 00116 (main.go:11)       MOVQ    &quot;&quot;.p2+56(SP), BX               # r2\u8d4b\u503c\u7ed9BX\u5bc4\u5b58\u5668\n        0x0079 00121 (main.go:11)       ADDQ    &quot;&quot;.p4+72(SP), BX               # BX+r4\u8d4b\u503c\u7ed9BX\u5bc4\u5b58\u5668\n        0x007e 00126 (main.go:11)       ADDQ    &quot;&quot;.p6+88(SP), BX               # BX+r6\u8d4b\u503c\u7ed9BX\u5bc4\u5b58\u5668\n        0x0083 00131 (main.go:11)       ADDQ    &quot;&quot;.p7+96(SP), BX               # BX+r7\u8d4b\u503c\u7ed9BX\u5bc4\u5b58\u5668\n        0x0088 00136 (main.go:11)       ADDQ    &quot;&quot;.p8+104(SP), BX              # BX+r8\u8d4b\u503c\u7ed9BX\u5bc4\u5b58\u5668\n        0x008d 00141 (main.go:11)       ADDQ    &quot;&quot;.p9+112(SP), BX              # BX+r9\u8d4b\u503c\u7ed9BX\u5bc4\u5b58\u5668\n        0x0092 00146 (main.go:11)       ADDQ    &quot;&quot;.p10+32(SP), BX              # BX+r11\u8d4b\u503c\u7ed9BX\u5bc4\u5b58\u5668\n        0x0097 00151 (main.go:11)       ADDQ    &quot;&quot;.p11+40(SP), BX              # BX+r10\u8d4b\u503c\u7ed9BX\u5bc4\u5b58\u5668\n        0x009c 00156 (main.go:11)       MOVQ    BX, &quot;&quot;.~r12(SP)                # BX\u5bc4\u5b58\u5668\u8d4b\u503c\u7ed9\u7b2c\u4e8c\u4e2a\u8fd4\u56de\u503c\u5b58\u653e\u5730\u5740SP\n        0x00a0 00160 (main.go:11)       MOVQ    &quot;&quot;.~r11+8(SP), AX              # \u7b2c\u4e00\u4e2a\u8fd4\u56de\u503cSP+8\u7684\u503c\u8d4b\u503c\u7ed9AX\u5bc4\u5b58\u5668\n        0x00a5 00165 (main.go:11)       MOVQ    16(SP), BP                     # main\u8fd4\u56de\u5730\u5740\u8d4b\u503c\u7ed9BP\n        0x00aa 00170 (main.go:11)       ADDQ    $24, SP                        # \u56de\u6536A\u51fd\u6570\u6808\u5e27\u7a7a\u95f4\n        0x00ae 00174 (main.go:11)       RET<\/code><\/pre>\n<p>\u5728A\u51fd\u6570\u6808\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff1a\u7a0b\u5e8f\u5148\u628ar1 ~ r9\u53c2\u6570\u5206\u522b\u4ece\u5bc4\u5b58\u5668\u8d4b\u503c\u5230main\u6808\u5e27\u7684\u5165\u53c2\u5730\u5740\u90e8\u5206\uff0c\u5373\u5f53\u524d\u7684SP+48~SP+112\u4f4d\u3002<strong>\u5176\u5b9e\u8fd9\u8ddfGO1.15.14\u7684\u51fd\u6570\u8c03\u7528\u53c2\u6570\u4f20\u9012\u8fc7\u7a0b\u5dee\u4e0d\u591a\uff0c\u53ea\u4e0d\u8fc7\u4e00\u4e2a\u662f\u5728caller\u4e2d\u505a\u53c2\u6570\u4ece\u5bc4\u5b58\u5668\u62f7\u8d1d\u5230\u6808\u4e0a\uff0c\u4e00\u4e2a\u662f\u5728callee\u4e2d\u505a\u53c2\u6570\u4ece\u5bc4\u5b58\u5668\u62f7\u8d1d\u5230\u6808\u4e0a\u3002<\/strong>\u800c\u4e14\u524d\u8005\u53ea\u4f7f\u7528\u4e86AX\u4e00\u4e2a\u5bc4\u5b58\u5668\uff0c\u540e\u8005\u4f7f\u7528\u4e869\u4e2a\u4e0d\u540c\u7684\u5bc4\u5b58\u5668\u3002<\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132868\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<p>\u5f88\u591a\u5f00\u53d1\u8005\u770b\u5230\u8fd9\u91cc\uff0c\u4f30\u8ba1\u4f1a\u6709\u4e00\u4e2a\u7591\u95ee\uff1aGo1.15 \u4e0e Go1.17 \u5728\u5bc4\u5b58\u5668\u8bbf\u95ee\u6b21\u6570\u4e0a\u548c\u6808\u8bbf\u95ee\u6b21\u6570\u4e0a\uff0c\u6ca1\u6709\u533a\u522b\u3002<strong>\u53ea\u662f\u5bc4\u5b58\u5668\u4e0a\u7684\u53c2\u6570\u62f7\u8d1d\u5230\u6808\u4e0a\u7684\u53d1\u751f\u65f6\u673a\u4e0d\u540c\uff1f\u90a3\u4e48\u4e3a\u4ec0\u4e48Go1.17\u4f1a\u6709\u8f83\u9ad8\u7684\u6027\u80fd\u4f18\u52bf\uff1f<\/strong><\/p>\n<p>\u6211\u4eec\u628a\u6253\u5370\u6c47\u7f16\u7684\u547d\u4ee4GOOS=linux GOARCH=amd64 go tool compile -S -N -L main.go \u4e2d\u7684-N -L\u7981\u7528\u5185\u8054\u4f18\u5316\u53bb\u6389\uff08\u8fd9\u624d\u662f\u6027\u80fd\u5bf9\u6bd4\u7684\u72b6\u6001\uff09\uff0c\u6211\u4eec\u518d\u770b\uff0c\u4f1a\u53d1\u73b0Go17 \u7684 A \u51fd\u6570\u4f1a\u76f4\u63a5\u6267\u884c\u5bc4\u5b58\u5668\u4e4b\u95f4\u7684\u52a0\u6cd5\uff0cGo15\u7248\u672c\u7684 A \u51fd\u6570\u4e0d\u4f1a\u3002<\/p>\n<p>\u5bf92.1\u8282\u7a0b\u5e8f\u6267\u884c\u547d\u4ee4\uff1a<\/p>\n<pre><code>GOOS=linux GOARCH=amd64 go tool compile -S main.go<\/code><\/pre>\n<p>Go1.15\u4f18\u5316\u540e\u7684\u6c47\u7f16\u4ee3\u7801\u662f\uff1a<\/p>\n<pre><code>&quot;&quot;.A STEXT nosplit size=59 args=0x40 locals=0x0\n        0x0000 00000 (main.go:8)        TEXT    &quot;&quot;.A(SB), NOSPLIT|ABIInternal, $0-64\n        0x0000 00000 (main.go:8)        FUNCDATA        $0, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0000 00000 (main.go:8)        FUNCDATA        $1, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0000 00000 (main.go:9)        MOVQ    &quot;&quot;.p1+8(SP), AX     #\u53c2\u6570\u4ece\u6808\u8d4b\u503c\u5230\u5bc4\u5b58\u5668AX\n        0x0005 00005 (main.go:9)        MOVQ    &quot;&quot;.p2+16(SP), CX    #\u53c2\u6570\u4ece\u6808\u8d4b\u503c\u5230\u5bc4\u5b58\u5668CX\n        0x000a 00010 (main.go:9)        ADDQ    CX, AX              \n        0x000d 00013 (main.go:9)        MOVQ    &quot;&quot;.p3+24(SP), CX    #\u53c2\u6570\u4ece\u6808\u8d4b\u503c\u5230\u5bc4\u5b58\u5668CX\n        0x0012 00018 (main.go:9)        ADDQ    CX, AX\n        0x0015 00021 (main.go:9)        MOVQ    &quot;&quot;.p4+32(SP), CX\n        0x001a 00026 (main.go:9)        ADDQ    CX, AX\n        0x001d 00029 (main.go:9)        MOVQ    &quot;&quot;.p5+40(SP), CX\n        0x0022 00034 (main.go:9)        ADDQ    CX, AX\n        0x0025 00037 (main.go:9)        MOVQ    &quot;&quot;.p6+48(SP), CX\n        0x002a 00042 (main.go:9)        ADDQ    CX, AX\n        0x002d 00045 (main.go:9)        MOVQ    &quot;&quot;.p7+56(SP), CX\n        0x0032 00050 (main.go:9)        ADDQ    CX, AX\n        0x0035 00053 (main.go:9)        MOVQ    AX, &quot;&quot;.~r7+64(SP)\n        0x003a 00058 (main.go:9)        RET<\/code><\/pre>\n<p>gvm \u5207\u6362\u5230Go1.17.1\u7248\u672c\u3002\u5bf92.1\u8282\u7a0b\u5e8f\u6267\u884c\u547d\u4ee4\uff1a<\/p>\n<pre><code>GOOS=linux GOARCH=amd64 go tool compile -S main.go<\/code><\/pre>\n<p>Go1.17\u4f18\u5316\u540e\u7684\u6c47\u7f16\u4ee3\u7801\u662f\uff1a<\/p>\n<pre><code>&quot;&quot;.A STEXT nosplit size=21 args=0x38 locals=0x0 funcid=0x0\n        0x0000 00000 (main.go:8)        TEXT    &quot;&quot;.A(SB), NOSPLIT|ABIInternal, $0-56\n        0x0000 00000 (main.go:8)        FUNCDATA        $0, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0000 00000 (main.go:8)        FUNCDATA        $1, gclocals\u00b733cdeccccebe80329f1fdbee7f5874cb(SB)\n        0x0000 00000 (main.go:8)        FUNCDATA        $5, &quot;&quot;.A.arginfo1(SB)\n        0x0000 00000 (main.go:9)        LEAQ    (BX)(AX*1), DX\n        0x0004 00004 (main.go:9)        ADDQ    DX, CX            #\u76f4\u63a5\u5728\u5bc4\u5b58\u5668\u4e4b\u95f4\u505a\u52a0\u6cd5\n        0x0007 00007 (main.go:9)        ADDQ    DI, CX            #\u76f4\u63a5\u5728\u5bc4\u5b58\u5668\u4e4b\u95f4\u505a\u52a0\u6cd5\n        0x000a 00010 (main.go:9)        ADDQ    SI, CX\n        0x000d 00013 (main.go:9)        ADDQ    R8, CX\n        0x0010 00016 (main.go:9)        LEAQ    (R9)(CX*1), AX\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00x0014\u00a000020\u00a0(main.go:9)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RET<\/code><\/pre>\n<p>\u5bf9\u6bd4\u53d1\u73b0\uff1a\u5bc4\u5b58\u5668\u4f20\u53c2\u548c\u6808\u4f20\u53c2\uff0c\u5728\u7f16\u8bd1\u5668\u5b9e\u9645\u4f18\u5316\u540e\u7684\u6267\u884c\u4ee3\u7801\u4e2d\uff0c\u524d\u8005\u76f4\u63a5\u4f1a\u5728\u5bc4\u5b58\u5668\u4e4b\u95f4\u505a\u52a0\u6cd5\uff0c\u540e\u8005\u591a\u4e86\u4ece\u6808\u62f7\u8d1d\u6570\u636e\u5230\u5bc4\u5b58\u5668\u5230\u52a8\u4f5c\uff0c\u56e0\u6b64\u524d\u8005\u6548\u7387\u66f4\u9ad8\u3002<\/p>\n<p>\u901a\u8fc7\u5206\u6790Go1.17.1\u51fd\u6570\u8c03\u7528\u8fc7\u7a0b\uff0c\u6211\u4eec\u53d1\u73b0\uff1a<\/p>\n<p><strong>\u53c2\u6570\u4f20\u9012\u4f7f\u7528\u4e86\u591a\u4e2a\u5bc4\u5b58\u5668\uff0c\u5e76\u4e14\u88ab\u8c03\u7528\u65b9callee\u7684\u8fd4\u56de\u503c\u7531callee\u672c\u8eab\u7684\u6808\u5e27\u8d1f\u8d23\u5b58\u653e\uff0c\u800c\u4e0d\u662f\u653e\u5728caller\u7684\u6808\u5e27\u4e0a\uff1b\u5f53callee\u7684\u6808\u5e27\u88ab\u9500\u6bc1\u65f6\uff0c\u5176\u8fd4\u56de\u503c\u901a\u8fc7AX\uff0cBX\u7b49\u5bc4\u5b58\u5668\u4f20\u9012\u7ed9\u8c03\u7528\u65b9caller\u3002<\/strong><\/p>\n<p>9\u4e2a\u4ee5\u5185\u7684\u53c2\u6570\u901a\u8fc7\u5bc4\u5b58\u5668\u4f20\u9012\uff0c9\u4e2a\u4ee5\u5916\u7684\u901a\u8fc7\u6808\u4f20\u9012\u3002\u5982\u679c\u5c06 A \u51fd\u6570\u7684\u8fd4\u56de\u503c\u4e2a\u6570\u8bbe\u7f6e\u5927\u4e8e9\u4e2a\uff0c\u540c\u6837\u4f1a\u53d1\u73b0\uff0c9\u4e2a\u4ee5\u5185\u7684\u8fd4\u56de\u503c\u901a\u8fc7\u5bc4\u5b58\u5668\u4f20\u9012\uff0c9\u4e2a\u4ee5\u5916\u7684\u901a\u8fc7\u6808\u4f20\u9012\u3002<\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132869\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<h2><strong>\u4e3a\u4f55\u9ad8\u7248\u672cGo\u8981\u6539\u7528\u5bc4\u5b58\u5668\u4f20\u53c2\uff1f<\/strong><\/h2>\n<p>\u81f3\u4e8e\u4e3a\u4ec0\u4e48Go1.17.1\u51fd\u6570\u8c03\u7528\u7684\u53c2\u6570\u4f20\u9012\u5f00\u59cb\u57fa\u4e8e\u5bc4\u5b58\u5668\u8fdb\u884c\u4f20\u9012\uff0c\u539f\u56e0\u65e0\u5916\u4e4e\u3002<\/p>\n<p>\u7b2c\u4e00\uff0c<strong>CPU\u8bbf\u95ee\u5bc4\u5b58\u5668\u6bd4\u8bbf\u95ee\u6808\u8981\u5feb\u7684\u591a<\/strong>\u3002\u51fd\u6570\u8c03\u7528\u901a\u8fc7\u5bc4\u5b58\u5668\u4f20\u53c2\u6bd4\u6808\u4f20\u53c2\uff0c\u6027\u80fd\u8981\u9ad85%\u3002<\/p>\n<p>\u7b2c\u4e8c\uff0c\u65e9\u671fGo\u7248\u672c\u4e3a\u4e86\u964d\u4f4e\u5b9e\u73b0\u7684\u590d\u6742\u5ea6\uff0c<strong>\u7edf\u4e00\u4f7f\u7528\u6808\u4f20\u9012\u53c2\u6570\u548c\u8fd4\u56de\u503c<\/strong>\uff0c\u4e0d\u60dc\u727a\u7272\u51fd\u6570\u8c03\u7528\u7684\u6027\u80fd\u3002<\/p>\n<p>\u7b2c\u4e09\uff0cGo\u4ece1.17.1\u7248\u672c\uff0c\u5f00\u59cb\u652f\u6301<strong>\u591aABI<\/strong>\uff08application binary interface \u5e94\u7528\u7a0b\u5e8f\u4e8c\u8fdb\u5236\u63a5\u53e3\uff0c\u89c4\u5b9a\u4e86\u7a0b\u5e8f\u5728\u673a\u5668\u5c42\u9762\u7684\u64cd\u4f5c\u89c4\u8303\uff0c\u4e3b\u8981\u5305\u62ec\u8c03\u7528\u89c4\u7ea6calling convention\uff09\uff0c\u4e3b\u8981\u662f\u4e24\u4e2aABI\uff1a\u4e00\u4e2a\u662f\u8001\u7248\u672cGo\u91c7\u7528\u7684\u5e73\u53f0\u901a\u7528ABI0\uff0c\u4e00\u4e2a\u662fGo\u72ec\u7279\u7684ABIInternal\uff0c\u524d\u8005\u9075\u5faa\u5e73\u53f0\u901a\u7528\u7684\u51fd\u6570\u8c03\u7528\u7ea6\u5b9a\uff0c\u5b9e\u73b0\u7b80\u5355\uff0c\u4e0d\u7528\u62c5\u5fc3\u5e95\u5c42cpu\u67b6\u6784\u5bc4\u5b58\u5668\u7684\u5dee\u5f02\uff1b\u540e\u8005\u53ef\u4ee5\u6307\u5b9a\u7279\u5b9a\u7684\u51fd\u6570\u8c03\u7528\u89c4\u8303\uff0c\u53ef\u4ee5\u9488\u5bf9\u7279\u5b9a\u6027\u80fd\u74f6\u9888\u8fdb\u884c\u4f18\u5316\uff0c\u5728\u591a\u4e2aGo\u7248\u672c\u4e4b\u95f4\u53ef\u4ee5\u8fed\u4ee3\uff0c\u7075\u6d3b\u6027\u5f3a\uff0c\u652f\u6301\u5bc4\u5b58\u5668\u4f20\u53c2\u63d0\u5347\u6027\u80fd\u3002<\/p>\n<p>\u6240\u8c13\u201c<strong>\u8c03\u7528\u89c4\u7ea6(calling convention)<\/strong>\u201d\u662f\u8c03\u7528\u65b9\u548c\u88ab\u8c03\u7528\u65b9\u5bf9\u4e8e\u51fd\u6570\u8c03\u7528\u7684\u4e00\u4e2a\u660e\u786e\u7684\u7ea6\u5b9a\uff0c\u5305\u62ec\uff1a\u51fd\u6570\u53c2\u6570\u4e0e\u8fd4\u56de\u503c\u7684\u4f20\u9012\u65b9\u5f0f\u3001\u4f20\u9012\u987a\u5e8f\u3002\u53ea\u6709\u53cc\u65b9\u90fd\u9075\u5b88\u540c\u6837\u7684\u7ea6\u5b9a\uff0c\u51fd\u6570\u624d\u80fd\u88ab\u6b63\u786e\u5730\u8c03\u7528\u548c\u6267\u884c\u3002\u5982\u679c\u4e0d\u9075\u5b88\u8fd9\u4e2a\u7ea6\u5b9a\uff0c\u51fd\u6570\u5c06\u65e0\u6cd5\u6b63\u786e\u6267\u884c\u3002<\/p>\n<h2><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000043132870\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/h2>\n<h2><strong>\u603b\u7ed3<\/strong><\/h2>\n<p>\u7efc\u5408\u4e0a\u9762\u7684\u5206\u6790\uff0c\u6211\u4eec\u5f97\u51fa\u7ed3\u8bba\uff1a<\/p>\n<p>Go1.17.1\u4e4b\u524d\u7684\u51fd\u6570\u8c03\u7528\uff0c\u53c2\u6570\u90fd\u5728\u6808\u4e0a\u4f20\u9012\uff1bGo1.17.1\u4ee5\u540e\uff0c9\u4e2a\u4ee5\u5185\u7684\u53c2\u6570\u5728\u5bc4\u5b58\u5668\u4f20\u9012\uff0c9\u4e2a\u4ee5\u5916\u7684\u5728\u6808\u4e0a\u4f20\u9012\uff1bGo1.17.1\u4e4b\u524d\u7248\u672c\uff0ccallee\u51fd\u6570\u8fd4\u56de\u503c\u901a\u8fc7caller\u6808\u4f20\u9012\uff1bGo1.17.1\u4ee5\u540e\uff0c\u51fd\u6570\u8c03\u7528\u7684\u8fd4\u56de\u503c\uff0c9\u4e2a\u4ee5\u5185\u901a\u8fc7\u5bc4\u5b58\u5668\u4f20\u9012\u56decaller\uff0c9\u4e2a\u4ee5\u5916\u5728\u6808\u4e0a\u4f20\u9012\u3002<\/p>\n<p>\u5728Go 1.17\u7684\u7248\u672c\u53d1\u5e03\u8bf4\u660e\u6587\u6863\u4e2d\u6709\u63d0\u5230\uff1a<strong>\u5207\u6362\u5230\u57fa\u4e8e\u5bc4\u5b58\u5668\u7684\u8c03\u7528\u60ef\u4f8b\u540e\uff0c\u4e00\u7ec4\u6709\u4ee3\u8868\u6027\u7684Go\u5305\u548c\u7a0b\u5e8f\u7684\u57fa\u51c6\u6d4b\u8bd5\u663e\u793a\uff0cGo\u7a0b\u5e8f\u7684\u8fd0\u884c\u6027\u80fd\u63d0\u9ad8\u4e86\u7ea65%\uff0c\u4e8c\u8fdb\u5236\u6587\u4ef6\u5927\u5c0f\u51cf\u5c11\u7ea62%<\/strong>\u3002<\/p>\n<p>\u7531\u4e8eCPU\u8bbf\u95ee\u5bc4\u5b58\u5668\u7684\u901f\u5ea6\u8981\u8fdc\u9ad8\u4e8e\u6808\u5185\u5b58\uff0c\u53c2\u6570\u5728\u6808\u4e0a\u4f20\u9012\u4f1a\u589e\u52a0\u6808\u5185\u5b58\u7a7a\u95f4\uff0c\u5e76\u4e14\u5f71\u54cd\u6808\u7684\u6269\u7f29\u5bb9\u548c\u5783\u573e\u56de\u6536\uff0c\u6539\u4e3a\u5bc4\u5b58\u5668\u4f20\u9012\uff0c\u8fd9\u4e9b\u7f3a\u70b9\u90fd\u5f97\u5230\u4e86\u4f18\u5316\uff0cGo\u7a0b\u5e8f\u5728\u4ece\u4f4e\u7248\u672c\u5347\u7ea7\u523017\u7248\u672c\u540e\uff0c\u6027\u80fd\u6709\u4e00\u5b9a\u7684\u63d0\u5347\u3002\u5728\u4e1a\u52a1\u5141\u8bb8\u7684\u60c5\u51b5\u4e0b\uff0c\u8fd9\u91cc\u5efa\u8bae\u5404\u4f4d\u5f00\u53d1\u8005\u53ef\u4ee5\u628a\u81ea\u5df1\u7a0b\u5e8f\u7684Go\u7248\u672c\u5347\u7ea7\u523017\u53ca\u4ee5\u4e0a\u3002<\/p>\n<p><strong>\u516c\u4f17\u53f7\u540e\u53f0\u56de\u590d\u201cGO117\u201d\u83b7\u5f97\u4f5c\u8005\u63a8\u8350GO\u76f8\u5173\u4f5c\u54c1<\/strong><\/p>\n<p><strong>\u817e\u8baf\u5de5\u7a0b\u5e08\u6280\u672f\u5e72\u8d27\u76f4\u8fbe\uff1a<\/strong><\/p>\n<p>1\u3001<a href=\"https:\/\/link.segmentfault.com\/?enc=Dw%2Fp%2BoA9JaFPp%2FylG7hWsw%3D%3D.8ox4kooi36JRVJQkUKTfP7FqOzA9EJTCBnGTCdWwJN%2FRqDFGO6XZ3sncMkfY2QhIsiR1R5nWDHi2Nha1XFlpW580bGCKF1RV9BVYDdIr5rRiVOsv9%2Foeoi%2BFscy6NtRtBNw0TT0Fn18PN4hqffbABoL76UpZEPkzP8sLmUoYYlhNDS1QnIb2gQp7jSufyQv29OTmvGVcHtK%2FNDPHE%2BWKStYKLTkEV6TxceoBAlXVbdryVS05eme5jGTQDPke1ypTicCjMKhldS1kDHFMeVfGUA2PzY3f3vz0dyMCt0FIuNM%3D\" rel=\"nofollow\">H5\u5f00\u5c4f\u4ece\u9f9f\u901f\u5230\u95ea\u7535\uff0c\u4f01\u5fae\u662f\u5982\u4f55\u505a\u5230\u7684<\/a><\/p>\n<p>2\u3001<a href=\"https:\/\/link.segmentfault.com\/?enc=9P4GHaS4nydWnsHMS7wHaw%3D%3D.e4sJaDnzIy2Y2DOGjC2dZKlcAI%2Bs49oeaF%2FAyfkwgsMOOtRz2bZGcTEkys4G9kotgHBCJmZhSYZ9bugPpWzAqW1FcLOKNuXZLwb%2FzYGGqZUNjF8MFVQbhWsGmsFlFl6PN07uSdXayiAtbvEIqb%2BbCdJ4TS3KN4rBqyu28E5SAeAq%2FxjMf16k3xd83EG1Kt68192FcxWpcSWbGfPD9oM15NuJVY0hqWt3P%2FtrATYel1eGBnCpXVDPDGj3NR8IwZzA7RPcA6aCPe4kMFY9vSMaflFAUNg4ssw%2FfTsZYNH497U%3D\" rel=\"nofollow\">\u5168\u7f51\u9996\u6b21\u63ed\u79d8\uff1a\u5fae\u79d2\u7ea7\u201c\u590d\u6d3b\u201d\u7f51\u7edc\u7684HARP\u534f\u8bae\u53ca\u5176\u5173\u952e\u6280\u672f<\/a>  <\/p>\n<p>3\u3001<a href=\"https:\/\/link.segmentfault.com\/?enc=wXejKTjW%2FJqUiOOq1KY9vA%3D%3D.H9ZTRNMR1SQT2yP9qtygJtm%2FqZGkHuGkicsLhWSq0qnrGc3sARY29pzVkJ8pD18mxXnogwKsAc3P1d%2FTLw1Xq0jsB%2FWnns7ZQQUztvSj%2FWR%2FTAMByzC2LAYbVynmlAJT1ziuKzsdV1dl1m2JORZeRr8asVcPgGpanOaTEEbLIHeajHv3DW8ZZ8ip2Xuw420R5JY3%2BJiKEmWzyqEKQEb9uxpwg3UUNFCLWJ%2BOQmRfmjYQadZobSYjPZgo%2BbUAJ7ohqoEKhLXyuZ%2FmoRy17MJlns2t0HS3JFbGW3xloTLWghU%3D\" rel=\"nofollow\">\u95f0\u79d2\u7ec8\u4e8e\u8981\u53d6\u6d88\u4e86\uff01\u4e00\u6587\u8be6\u89e3\u5176\u6765\u6e90\u53ca\u5f71\u54cd<\/a><\/p>\n<p>4\u3001<a href=\"https:\/\/link.segmentfault.com\/?enc=oX%2FKrQ%2Btkm4kx9uBUrkFaA%3D%3D.eJNXX7Sp%2FcCvlvA1CoghiTKdjHb66V0qAzWo9Wq%2BjeBFdiC%2F0Itcf9YlHD%2FEhV%2FmHsXct2vjCmYIAFOGauurjqGI6bwqJX9rRvRgRRee6wtAngJlmNiBs2VBzbQ1rG%2FCG09vLbpwiq3WBnuMS9bEPwulBiRKs9N50QO4ZlxNMbV3kBFCRmBVmeXn7CC6WGGOq4T00rch4eTiWfAeTtJ8Pw%2FJGrzLi7zJpE2J4H0wPGYqCRUlvFGe3WCp4TEH97FLL0FucX%2Fto9%2Bbu01m3A6W%2FzuZXkmE2YoP8g0FqGvhmbY%3D\" rel=\"nofollow\">\u4e07\u5b57\u907f\u5751\u6307\u5357\uff01C++\u7684\u7f3a\u9677\u4e0e\u601d\u8003\uff08\u4e0b\uff09<\/a><\/p>\n<p><a href=\"https:\/\/link.segmentfault.com\/?enc=Pof9ExhFhlrV1taj2mue0A%3D%3D.CQtWIdE%2Ffl5ZwC%2FyqgWJHcLKCIe%2BKqWX%2BhccWkCoYGPW0FPwnuO%2BJipxRPqFolHFZyBsoSyAcTU5aHcpKO56Ig%3D%3D\" rel=\"nofollow\">\u9605\u8bfb\u539f\u6587<\/a><\/p>\n<p><a href=\"https:\/\/segmentfault.com\/a\/1190000043132858\">https:\/\/segmentfault.com\/a\/1190000043132858<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5bfc\u8bfb\uff5cGo\u7684\u51fd\u6570\u8c03\u7528\u65f6\u53c2\u6570\u662f\u901a\u8fc7\u6808\u4f20\u9012\u8fd8\u662f\u5bc4\u5b58\u5668\u4f20\u9012\uff1f\u4f7f\u7528\u54ea\u4e2a\u7248\u672c\u7684Go\u8bed\u8a00\u80fd\u8ba9\u7a0b\u5e8f\u8fd0\u884c\u6027\u80fd\u63d0\u53475%\uff1f\u817e\u8baf\u540e\u53f0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-10006999","post","type-post","status-publish","format-standard","hentry","category-share"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10006999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10006999"}],"version-history":[{"count":0,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10006999\/revisions"}],"wp:attachment":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10006999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10006999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10006999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}