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