首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >x86和x64堆栈帧

x86和x64堆栈帧
EN

Stack Overflow用户
提问于 2009-11-26 01:44:57
回答 4查看 696关注 0票数 2

在x86和x64架构中,当编译器在堆栈上分配变量时有什么不同?假设我有一个函数

代码语言:javascript
复制
foo(){
    int i = 5;
    i += 4;
}

在这两种架构中,如何在堆栈上进行不同的分配?

EN

回答 4

Stack Overflow用户

发布于 2009-11-26 02:09:37

对于微软的x64 ABI,可以在"Stack Usage“下查看http://msdn.microsoft.com/en-us/library/7kcdt6fy.aspx。它与他们的x86 ABI有很大的不同。

其他的x64 ABI (Linux,OS等)可能与微软的相似,但又有细微的不同。GCC的文档可能是一个很好的开始寻找它们的地方。

票数 4
EN

Stack Overflow用户

发布于 2009-11-26 01:49:42

也许我在64位CPU上的工作还不够,我的大部分汇编语言都是MIPS;一点x86,但是为什么要有区别呢?

你试过了吗?看一下生成了什么指令...

票数 2
EN

Stack Overflow用户

发布于 2009-11-26 02:02:54

正如Paul所指出的,编译器可能根本不会将这个变量放到堆栈中。我只想提一下,编译器耗尽寄存器并最终使用堆栈进行变量存储的想法被称为“寄存器溢出”,以及you can read more about it on Wikipedia

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1798704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档