总结的问题:
在CPython中,我发现a line试图通过重新分配变量来避免寄存器溢出。线的变化可以追溯到2015年创建的the commit。我很好奇线的原理。
当用户运行Python时,有许多数据和代码加载到内存或寄存器中。如果更改CPython代码的其他部分,为什么防止寄存器溢出的代码行仍然有用? CPython不断构建在各种CPU架构和不同的操作系统上。为什么提交的注释刚才提到了编译器的类型?
当代码生成器用完了保存中间和常用值的寄存器时,它会通过写入内存来溢出寄存器,通常是在从堆栈分配的区域中。通常,这是一种低成本操作,并且高度依赖于cpu中的寄存器数量,给编译器的选项以及编译器本身的版本。
您应该努力编写清晰的代码,而不是尝试对代码生成器进行反向工程。通常,代码生成器会通过生成相当好的代码来奖励您。当您遇到性能问题时,探查器应该引导您访问需要重新访问的代码。通常在结构上或算法上进行改进。改进生成代码的代码技巧通常围绕向编译器显示信息;例如它认为是动态的值实际上是静态的,或者安排数据结构以更好地利用缓存资源。
如果你必须对代码生成器进行反向工程,你真的可以用机器语言重写序列 - 至少有一本关于机器语言的手册,其中编译器黑客总是部落知识。你怎么知道用机器语言重写哪些位 - 再次查看分析器。