2012-01-25 10 views
2

配列に変数を格納するにはどうすればよいですか?実行時にのみ認識されるサイズですか?この配列の要素にはどうすればアクセスできますか?私はそれが簡単なはずだと思うが、私は方法を見ない。FASM:動的配列

私はたぶんthis article about heapはあなたを助けることができるC.

答えて

3

で動的配列のようなものを意味します。

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

あるいは、ローカルC99可変長配列を持つ関数のためのCコンパイラから得られるように、 'sub rsp、rax'は実行時可変量のスタック領域を確保することができます。 –