我正在编写一个程序来打印一个 32 位数字,并且我正在考虑将每个数字存储在堆栈中,以利用其后进先出功能。这就产生了一个问题,我可以在堆栈上存储 32 位数字吗?
我的问题是,我可以在堆栈中存储多少位信息?我可以压入堆栈的东西的数量限制是多少?我可以存储 64 位数字吗?128?多个任意长度?
提前致谢,
赖莱
稍微取决于操作系统,更多取决于您使用的链接器,但您应该没问题。默认情况下分配一兆字节或更多的堆栈是很常见的,因此 128 字节不算什么。只要确保在返回之前重置堆栈指针,一切都会好起来的。
如果你发现你需要的比默认的多,你通常也可以告诉链接器分配一个特定大小的堆栈。
它实际上并没有nasm
规定这一点,更多的是您使用的链接器。nasm
所做的只是创建可以链接在一起的目标文件。
如果您使用ld
Linux 的链接器,您很可能会发现您的默认堆栈是 2M。
所以,不,32 字节并不会真正对此产生巨大影响,即使你用完了堆栈,你也可以使用类似的东西ld --stack 4194304
来提升它。