我想创建一个包含例如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错误
答案 0 :(得分:2)
mmap
需要6个参数,但只传递5.您忘记为文件描述符设置r8
。假设您要分配匿名内存,则应将其设置为-1
,当然还应在标志中设置MAP_ANONYMOUS
。
PS:如果你有可用的C库,分配内存的简单方法就是调用malloc()
。