0

我正在编写一个程序来打印一个 32 位数字,并且我正在考虑将每个数字存储在堆栈中,以利用其后进先出功能。这就产生了一个问题,我可以在堆栈上存储 32 位数字吗?

我的问题是,我可以在堆栈中存储多少位信息?我可以压入堆栈的东西的数量限制是多少?我可以存储 64 位数字吗?128?多个任意长度?

提前致谢,

赖莱

4

2 回答 2

1

稍微取决于操作系统,更多取决于您使用的链接器,但您应该没问题。默认情况下分配一兆字节或更多的堆栈是很常见的,因此 128 字节不算什么。只要确保在返回之前重置堆栈指针,一切都会好起来的。

如果你发现你需要的比默认的多,你通常也可以告诉链接器分配一个特定大小的堆栈。

于 2012-10-30T05:15:18.883 回答
1

它实际上并没有nasm规定这一点,更多的是您使用的链接器。nasm所做的只是创建可以链接在一起的目标文件。

如果您使用ldLinux 的链接器,您很可能会发现您的默认堆栈是 2M。

所以,不,32 字节并不会真正对此产生巨大影响,即使你用完了堆栈,你也可以使用类似的东西ld --stack 4194304来提升它。

于 2012-10-30T05:29:16.217 回答