2012-01-25 65 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變長數組的函數一樣。 –