When functions dissolve (2020)
6 months ago
- #functions
- #optimization
- #assembly
- 高级语言中的函数抽象了程序逻辑,但编译为汇编后会丧失模块性
- 系统设计中的模块性强度各异,从弱(共享地址空间)到强(独立进程)不等
- 汇编中的子程序缺乏独立内存空间,相比高级语言函数其模块性更'软'
- 尾调用优化消除了不必要的返回地址,提升了执行效率
- 尾递归可被优化为循环结构,从而减少调用开销
- 协程通过多入口点泛化了子程序概念,现见于Python、C#等现代语言
- 汇编代码将函数混合成'指令汤',其重排序和优化会破坏原始结构