今天有没有两个堆栈的活跃 CPU 架构?

84R*_*73R 1 assembly cpu-architecture

一般来说,使用两个堆栈来防止缓冲区溢出探索是否更简单?一个用于变量和传递参数的堆栈,另一个用于返回地址。

或者像 NX/XD 位(在 AMD/Intel x86 上)作为非可执行堆栈的东西做得更好?

Tim*_*ler 6

Itanium 有两个堆栈。我相信一个用于存储局部变量(如数组和东西),而另一个用于返回地址。这样,您就不能通过溢出缓冲区来覆盖返回地址。

https://blogs.msdn.microsoft.com/oldnewthing/20050421-28/?p=35833