如何使用malloc和free在64位NASM?(How to use malloc and fre

2019-09-30 19:11发布

在64位NASM,我使用的malloc()从C库分配的8000个字节的存储块,并当我完成它,我通过调用自由释放它()。

我的研究也得出了很多关于如何做到这一点,在64位NASM相互矛盾的信息,并且大部分的信息是32位,其中调用约定是不同的,或者它的C或C ++,不NASM。

我想我有malloc的部分权利,但我不知道自由的一部分。 我张贴这个问题,因为我不想测试,并有一个内存块已分配但未被释放。

所以我的两个问题很简单:
(1)我有这个权利对于64位NASM?
(2)语法相同的Windows和Linux?

我只显示了malloc和我的程序的免费部分:

extern malloc
extern free

push rdi

; Allocate the memory buffer
mov rdi,8000
call malloc
mov [array_pointer],rax ;array_pointer is initialized in .data

; Code that uses the buffer goes here.  

; Free the memory buffer
push rdi
call free
add rsp,8

pop rdi
ret

Answer 1:

汇编语言可是没有一个标准库。 因此,这是不是一个组装的langauge问题不一定这是我有一组符合此调用约定或通过X编译器和版本如此这般设置所做库。 我想与链接,并使用这些库从汇编语言。 那么首先只是把它写在语言和编译并保存临时工或编译成汇编,并与该代码开始。 或拆解这样的代码来发现调用约定和比较,为你找到关于这个目标平台与该编译器的调用约定读了的时候。

如果它是一个系统调用,你想直接做,而不是库调用,那么你需要的系统调用接口为这个平台和操作系统上读了,没有理由认为任何两个是相同的(的Linux,BSD时,Windows等)。 也各说主要版本是相同的,尽管他们可能是...

然后再编写代码,以符合无论你找到。



文章来源: How to use malloc and free in 64-bit NASM?