From b37927bd8475ab5195cba01a7437d18ed7509950 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Thu, 7 Jun 2018 08:14:16 +0800 Subject: [PATCH] =?UTF-8?q?ch3-06:=20=E5=BC=80=E4=B8=AA=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 2 +- ch3-asm/ch3-06-func-again.md | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SUMMARY.md b/SUMMARY.md index 9e17b0a..5413974 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -28,7 +28,7 @@ * [3.3. 常量和全局变量](ch3-asm/ch3-03-const-and-var.md) * [3.4. 函数](ch3-asm/ch3-04-func.md) * [3.5. 控制流](ch3-asm/ch3-05-control-flow.md) - * [3.6. 再论函数(TODO)](ch3-asm/ch3-06-func-again.md) + * [3.6. 再论函数(Doing)](ch3-asm/ch3-06-func-again.md) * [3.7. FUNCDATA和PCDATA(TODO)](ch3-asm/ch3-07-funcdata-pcdata.md) * [3.8. C预处理器(TODO)](ch3-asm/ch3-08-c-preprocessors.md) * [3.9. Go核心对象结构(TODO)](ch3-asm/ch3-09-core-type.md) diff --git a/ch3-asm/ch3-06-func-again.md b/ch3-asm/ch3-06-func-again.md index be92c39..a6990ea 100644 --- a/ch3-asm/ch3-06-func-again.md +++ b/ch3-asm/ch3-06-func-again.md @@ -1,3 +1,5 @@ -# 3.6. 再论函数(TODO) +# 3.6. 再论函数(Doing) + +在前面的章节中我们已经简单讨论过Go的汇编函数,但是那些主要是叶子函数。叶子函数的最大特点是不会调用其他函数,也就是栈的大小是可以预期的,叶子函数也就是可以基本忽略爆栈的问题(如果已经爆了,那也是上级函数的问题)。如果没有爆栈问题,那么也就是不会有栈的分裂问题;如果没有栈的分裂也就不需要移动栈上的指针,也就不会有栈上指针管理的问题。但是是现实中Go语言的函数是可以任意深度调用的,永远不用担心爆栈的风险。那么这些近似黑科技的特殊是如何通过低级的汇编语言实现的呢?这些都是本节尝试讨论的问题。 TODO