gpt4 book ai didi

assembly - 使用 NASM 中调用 malloc 返回的内存

转载 作者:行者123 更新时间:2023-12-02 21:32:05 24 4
gpt4 key购买 nike

我使用 nasm 编译器将代码编译成目标文件,然后调用 gcc 的链接器来链接该目标文件以创建最终的可执行文件。这意味着我可以访问 C 的运行时库。

我需要进行动态内存分配,因此我按如下方式调用 malloc

push 20 ;push amount of bytes malloc should allocate    
call _malloc ;call malloc
add esp,4 ;undo push

分配的内存地址在 eax 寄存器中返回,但是如何使用该地址用值初始化该位置?

我的程序的目的是让用户指定他们想要输入多少个数字,然后为每个数字动态创建空间。理想情况下,我希望创建一个与用户指定的确切大小相匹配的数组,并且能够迭代该数组。

最佳答案

使用malloc分配内存后,eax的值只是一个可以使用的指针。例如,要将值写入其中的前两个 32 位 int,您可以执行以下操作:

mov dword ptr [eax], 0
mov dword ptr [eax + 4], 1

关于assembly - 使用 NASM 中调用 malloc 返回的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5546839/

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