assembly - 如何使用nasm为程序集8086中的数组动态分配内存

标签 assembly memory-management malloc nasm

所以我需要在组装中做这样的事情

int *arr = malloc(sizeof (int) * size);

用户在其中输入大小并基于该大小,将调用while循环来填充数组。

所以我需要一个指向malloc已创建的空间的指针,该如何在ass 86中做到这一点?
另外,我在哪里存储该指针,以便以后可以使用该数组。要说对输入进行二进制搜索吗?

问候
rr

最佳答案

我会以某种方式猜测这不是您想要的。

简而言之,在汇编中分配内存并不是特别容易。

如果您要了解系统例程,库和链接器的调用约定,那么对系统函数进行调用很容易。您可能通过中断来调用某种OS函数,而这又取决于操作系统。

因为通常,汇编程序倾向于具有非常静态的内存 View ,并定义自己的内存映射。您可以分配一个大数据块,然后将您自己的“malloc”对应于该数据块。例程加载后,原始块将成为您的块。这可能更接近您想要做的事情,但是显然它可能需要做更多的工作。

如果一次不分配多个数组,则只需在汇编源中定义一个“足够大”的块(例如10,000个整数)。然后,您可以使用它。

假设您确实调用了一些内存分配例程,那么结果将在堆栈或寄存器中返回。然后,您可以将该值保留在专用于在其余处理中保存它的任务的寄存器中,或者您可以简单地将该值存储到其他地方的内存中,然后在以后需要时将其加载。

关于assembly - 如何使用nasm为程序集8086中的数组动态分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5561022/

相关文章:

objective-c - Release、Dealloc 和 Self 引用

c - 递归结构和 malloc()

c++ - 为什么 VS 做 imul rax,rax,0 而不是简单的移动?

assembly - 为什么 SPARC 汇编 ld/st 指令中需要方括号?

assembly - AND 比整数模运算更快?

javascript - JavaScript/TypeScript 中带有字符串的连续分配数组

c++ - 如何在汇编函数中将元素数组作为参数传递时转发 ARM 寄存器的地址指针

c - 在 SIGINT 上释放分配内存的最佳实践

c - 我应该在 C 中的 basename/dirname 之后释放 strdup 指针吗?

c - 插入二叉搜索树