【发布时间】:2021-02-19 18:43:24
【问题描述】:
我试图在运行时为变量分配一定量的空间。我知道我可以在编译时为变量分配恒定数量的空间,例如:
.data
variable: # Allocate 100 bytes for data
.space 100
但是,如何在运行时为变量分配可变数量的空间?比如在运行时给变量分配%eax字节空间?
【问题讨论】:
-
不能动态分配静态存储。您需要使用堆栈或 malloc / mmap / 其他。 (除非你只是在
.bss中创建一个巨大的数组,否则你应该把它而不是.data放在那里,并且只使用你需要的任何数量。内核的延迟内存分配可以做到这一点。) -
@PeterCordes 换句话说,将堆栈指针向下推我要分配给变量的数据量?我如何将数据插入堆栈中新分配的空间,然后知道如何检索它以供以后使用?
标签: assembly x86 gnu-assembler att