gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:57:31 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com