使用mmap函数创建数组。汇编程序x86_64 AT& T.

时间:2015-04-26 18:53:47

标签: linux assembly x86-64 mmap system-calls

我想创建一个包含例如4个值的数组 这是我的代码:

mov $32,%rsi # 4 x 8bytes
mov $9,%rax
mov $0,%rdi
mov $0x3,%rdx
mov $0x01,%r10
mov $0,%r9
syscall

现在我在rax中有一个新的32位字节地址?

当我试图将某些内容放入其中时,例如:

mov $0,%r14
mov $3,%rdx
mov %rdx,(%rax,%r14,8)

它给了我SIGSEGV错误

1 个答案:

答案 0 :(得分:2)

mmap需要6个参数,但只传递5.您忘记为文件描述符设置r8。假设您要分配匿名内存,则应将其设置为-1,当然还应在标志中设置MAP_ANONYMOUS

PS:如果你有可用的C库,分配内存的简单方法就是调用malloc()