【问题标题】:Assembly - Reserve array space during program?装配 - 在程序期间保留阵列空间?
【发布时间】:2012-01-19 18:20:36
【问题描述】:

我正在编写一个汇编程序,我想声明一个数组。我在寄存器中有数组大小,并且我知道元素的类型(即每个元素有多少字节)-如何在堆中为该数组保留空间(然后访问特定元素)?我需要调用 malloc 吗?

【问题讨论】:

    标签: arrays assembly x86 malloc nasm


    【解决方案1】:

    “malloc()”是 C 运行时库的产物。

    您当然可以从程序集中调用“malloc()”...前提是您首先初始化了 C 运行时系统。

    C 和 C++ 都会自动为您执行此操作;在“main()”被调用之前。

    例如,这里有一个关于如何在基于 ARM 的平台上执行此操作的链接:

    以下是 Microsoft 提供的关于在 Windows 上要注意哪些标准 C 函数的链接:

    【讨论】:

      【解决方案2】:

      我认为最好的方法是调用 malloc。考虑 FASM 的这段代码:

       include 'win32a.inc' 
       ...
       invoke  malloc,eax
       mov     [myHeap],eax 
      

      查看:http://www.delorie.com/djgpp/doc/ug/asm/calling.html

      【讨论】:

      • 谢谢,我认为它可能必须是 malloc。 NASM 的代码是否类似?
      • 我认为 NASM 应该是 _malloc
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2019-12-10
      • 2019-01-11
      • 2018-08-14
      • 1970-01-01
      相关资源
      最近更新 更多