Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux nasm程序集堆栈上的存储限制_Linux_Assembly_Stack_Nasm - Fatal编程技术网

Linux nasm程序集堆栈上的存储限制

Linux nasm程序集堆栈上的存储限制,linux,assembly,stack,nasm,Linux,Assembly,Stack,Nasm,我正在编写一个程序来打印一个32位的数字,我正在考虑将每个数字存储在堆栈上,以利用其后进先出功能。这就产生了一个问题,我可以在堆栈上存储32位数字吗 我的问题是,我可以在堆栈上存储多少位信息?我可以推到堆栈上的东西的数量限制是多少?我可以存储64位数字吗?128? 一个任意长度的数字 提前感谢, Rileyh有一点取决于操作系统,更多的取决于你使用的链接器,但你应该没事。默认情况下,通常会分配一个兆字节或更多的堆栈,因此128字节不算什么。只要确保在返回之前重置堆栈指针,一切都会正常 如果你发现

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

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

提前感谢,


Rileyh有一点取决于操作系统,更多的取决于你使用的链接器,但你应该没事。默认情况下,通常会分配一个兆字节或更多的堆栈,因此128字节不算什么。只要确保在返回之前重置堆栈指针,一切都会正常


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

你使用的链接器越多,它实际上并不是
nasm
规定的。nasm所做的一切就是创建可以链接在一起的对象文件

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


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

数字?一点在汇编中,您不需要将位推入堆栈,而是推入整数。你不能推一个字节,至少一个字。酷。有道理。我正在使用
ld
作为我的链接器,所以我会记住这一点。