说说安腾处理器的双栈设计

去年的时候,我曾提到,在安腾(Itanium)处理器上有两个栈。tGC搜集对生活有用的优质文章

传统上的”栈”(包括SP寄存器所指的那个栈)是一个手动管理的内存块,函数可以从中分配空间以在执行期间使用。tGC搜集对生活有用的优质文章

举个例子,如果你声明一个局部变量:tGC搜集对生活有用的优质文章

TCHAR szBuffer[MAX_PATH];tGC搜集对生活有用的优质文章

那么,这个缓冲区将会在上面所说的栈中分配内存。tGC搜集对生活有用的优质文章

但是,不是所有的局部变量都分配在这个栈中。tGC搜集对生活有用的优质文章

回想一下,安腾处理器上有大量的寄存器,其中大部分都参与函数调用。 因此,许多局部变量被放置在寄存器中而不是栈中,当调用函数时,这些寄存器被处理器所占用,而在函数返回时释放。 他们在哪里得到这些内存空间? 处理器通常可以将它们存储到其他未使用的寄存器中,这项技术比较复杂晦涩,我暂时不细说 (那些仍然感兴趣的人,可以阅读英特尔关于该主题的文档。)如果处理器用完了这些寄存器,它就会转为使用主存储器,进入一个称为“寄存器后备存储”的地方。 这是另一个与传统栈类似栈内存块。tGC搜集对生活有用的优质文章

如前所述,这种双栈设计模型的一个结果是,栈溢出不会破坏函数返回地址,因为返回地址没有保存在传统栈上,相反,它保存在寄存器中或(在寄存器不够的情况下)在寄存器后备存储中。tGC搜集对生活有用的优质文章

双栈设计另一个结果是,各种定位堆栈开始的技巧只会找到其中一个堆栈。 如果你认为对该栈进行前后偏移,能找到所有可访问的对象引用,那么错过另一个栈将导致问题。tGC搜集对生活有用的优质文章

安腾架构挑战了许多假设,并且对各种技术上非法但没有人会真正执行的恶作剧更加不会宽容,其中一些我在之前的文章中已经讨论过。tGC搜集对生活有用的优质文章

今天可以在这个列表中加上新的主题了,我将其命名为:”第二个栈”。tGC搜集对生活有用的优质文章

总结

安腾:不好意思,我设计过于先进导致提前结束了生命周期。tGC搜集对生活有用的优质文章

F22:我也一样哈。tGC搜集对生活有用的优质文章

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。tGC搜集对生活有用的优质文章

本文来自:《The Itanium’s so-called stack》tGC搜集对生活有用的优质文章

tGC搜集对生活有用的优质文章

也许你还喜欢

图片格式转换器ico图文教程详细解

ico格式也是我们经常接触到的如桌面的图标,也有一些公司的标志等等,那么怎样把图片转换

360随身wifi2使用教程图文解说

只要你的电脑上着网,不管是台式还是笔记本,只要插上360随身wifi二代,你的手机就能接受到

打电话对方听不到我的声音图文解决

伴随着五一小长假的临近,各种音乐节等演出活动纷纷拉开了序幕。2021年,草莓音乐节计划举

怎么网页翻译成中文操作步骤图文详

现在很多人都在使用电脑,那么怎么设置英文网页变成中文呢?今天小编为大家讲讲,希望能够对

怎么root安卓手机操作步骤图文详解

使用安卓手机的用户们,对手机root并不陌生,有的朋友们为了预装一些app,或者使用一些高级

kakaotalk怎么用以及注册方法图文

kakaotalk电脑版是一个功能和国内的微信差不多的手机聊天软件,拥有windows、iPhone、An

笔记本如何设置wifi热点图文操作步

虽然很多手机支持wifi,但是不加密或者知道密码的wifi热点却寥寥无几。笔记本的无线网卡

如何查车辆违章记录图文教程最新分

生活中车辆违章很常见,但如何快速的查询自己的违章记录呢?下面就由小编带你一起共同查询

删除浏览器上保存的密码具体操作方

有时候我们会遇到一些问题,比如如何删除浏览器上保存的密码?下面就为大家介绍一下。

怎样删除浏览器具体操作方法图文介

现在给大家介绍一下怎样删除浏览器