2012-01-25 30 views
2

如何将变量存储在数组中,哪些大小仅在运行时间内已知?我怎样才能访问这个数组的元素?我认为这应该很容易,但我没有看到办法。FASM:动态数组

我的意思是这样的动态数组在C

回答

0

您没有说明哪个操作系统,但在Windows下,VirtualAlloc是分配粗体内存块的简单方法。它返回一个指针,您可以将其加载到寄存器中并用作基地址。

invoke VirtualAlloc,NULL,size,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE 
mov  [eax],something 
0

你也可以用一个静态的大小上堆在你的函数的开头分配内存:

proc yourFunction stdcall param1:DWORD 
local yourData[256]:BYTE 
    ;... 
endp 

它具有一个静态的大小(在上面的例子256个字节)的缺点,但您不必调用VirtualAlloc等plattform特定的API,并且在离开函数时会清除它(无需跟踪分配的数据并调用VirtualFree())。

+0

或者你可以'sub rsp,rax'来保存一个运行时变量的栈空间,就像你从一个C编译器获得一个带有本地C99变长数组的函数一样。 –