使用 mmap 函数创建数组。汇编器 x86_64 AT&T
Creating array with mmap function. Assembler x86_64 AT&T
我想创建一个包含例如 4 个值的数组
这是我的代码:
mov ,%rsi # 4 x 8bytes
mov ,%rax
mov [=11=],%rdi
mov [=11=]x3,%rdx
mov [=11=]x01,%r10
mov [=11=],%r9
syscall
现在我在 rax 中分配了一个 32 字节的新地址?
当我尝试将某些东西放入其中时,例如:
mov [=12=],%r14
mov ,%rdx
mov %rdx,(%rax,%r14,8)
它给我 SIGSEGV 错误
mmap
需要 6 个参数,但您只传递了 5 个。您忘记为文件描述符设置 r8
。假设你想分配匿名内存,这应该设置为 -1
当然 MAP_ANONYMOUS
也应该在标志中设置。
PS:如果您有可用的 C 库,分配内存的简单方法是调用 malloc()
.
我想创建一个包含例如 4 个值的数组 这是我的代码:
mov ,%rsi # 4 x 8bytes
mov ,%rax
mov [=11=],%rdi
mov [=11=]x3,%rdx
mov [=11=]x01,%r10
mov [=11=],%r9
syscall
现在我在 rax 中分配了一个 32 字节的新地址?
当我尝试将某些东西放入其中时,例如:
mov [=12=],%r14
mov ,%rdx
mov %rdx,(%rax,%r14,8)
它给我 SIGSEGV 错误
mmap
需要 6 个参数,但您只传递了 5 个。您忘记为文件描述符设置 r8
。假设你想分配匿名内存,这应该设置为 -1
当然 MAP_ANONYMOUS
也应该在标志中设置。
PS:如果您有可用的 C 库,分配内存的简单方法是调用 malloc()
.