什么是"堆栈捶打"?

tal*_*ity 5 c embedded

什么是"堆栈捶打"?还是"堆叠捶打"?(因为我不知道这个定义,所以我不确定它是否是可数或不可数的术语.)

Tim*_*oft 5

堆栈颠簸就像堆颠簸,但在堆栈上。

那里,现在已经解释了。

哦,你想要更多细节吧?

如果您在不是处理器的处理器上模拟基于堆栈的处理器,那么您就是在颠簸堆栈。

如果你的 C 代码 malloc 和 free 每隔一行代码,你就是在颠簸堆。

堆栈颠簸的问题在于,如果您分析代码,CPU 几乎所有的时间都花在弹出和推送上。

对于堆抖动, malloc() 和 free() 是您最常用的 #1 和 #2 函数。

现在,一些 CPU(rockwell 制造了一些)实际上经过优化,可以在硬件中运行基于堆栈的语言。

  • 内部内存,用于缓存 CPU 内部堆栈的前 N ​​KB
  • 几个寄存器
  • 所有指令堆栈相对

奇怪的是,Java 虚拟机是一个基于堆栈的模型。

在 x86 硬件上运行一个非常愚蠢的 FORTH 实现会破坏堆栈。你在阅读 Forth 规范后可能会写的那种东西,所以你为第四条指令发出 x86 机器代码并且不要优化它。兄弟们,我很抱歉,我知道你的实现要好得多。

Postscript 也是基于堆栈的,这让早期的 postscript 打印机令人兴奋:它们的内存有限,CPU 速度慢:并且运行堆栈颠簸语言。我敢肯定,为了让它运行得更好,像最初的 Apple Laserwriter 这样的东西已经做了很多努力。它有一个摩托罗拉 68000 CPU,以(10 左右)兆赫兹和 1Mb 的 RAM IIRC 运行。

再次,堆栈 thrashers。

那有帮助吗?