我只是在 MacOS X 上做一些有趣的组装,目前我只是试图使用 mmap 系统调用将文件映射到内存中,但我现在有点困惑。这是代码片段:
movq $0x20000c5, %rax //mmap syscall
xorq %rsi,%rsi //
movq %rcx,%rdi //size of the file is in rcx
movq $0x1,%rdx //read only
movq $0x1,%r10 //shared
movq finput(%rip),%r8 //file descriptor
xorq %r9,%r9 //no offset
syscall
从设置进位标志的意义上讲,这不会产生错误,但是它在 rax 中返回 0,我认为它实际上应该返回指向它已将文件映射到的内存的指针。我当然试过检查明显的东西,文件大小或文件描述符没有任何问题。我敢打赌,我在这里遗漏了一些明显的东西,但我现在看不到。将非常感谢任何帮助。