【发布时间】:2012-01-19 18:20:36
【问题描述】:
我正在编写一个汇编程序,我想声明一个数组。我在寄存器中有数组大小,并且我知道元素的类型(即每个元素有多少字节)-如何在堆中为该数组保留空间(然后访问特定元素)?我需要调用 malloc 吗?
【问题讨论】:
标签: arrays assembly x86 malloc nasm
我正在编写一个汇编程序,我想声明一个数组。我在寄存器中有数组大小,并且我知道元素的类型(即每个元素有多少字节)-如何在堆中为该数组保留空间(然后访问特定元素)?我需要调用 malloc 吗?
【问题讨论】:
标签: arrays assembly x86 malloc nasm
“malloc()”是 C 运行时库的产物。
您当然可以从程序集中调用“malloc()”...前提是您首先初始化了 C 运行时系统。
C 和 C++ 都会自动为您执行此操作;在“main()”被调用之前。
例如,这里有一个关于如何在基于 ARM 的平台上执行此操作的链接:
以下是 Microsoft 提供的关于在 Windows 上要注意哪些标准 C 函数的链接:
【讨论】:
我认为最好的方法是调用 malloc。考虑 FASM 的这段代码:
include 'win32a.inc'
...
invoke malloc,eax
mov [myHeap],eax
【讨论】: