段错误简单nasm程序

Segmentation fault simple nasm program

我刚开始学习 linux 64 位汇编,并试图真正理解 lea 和 mov 之间的区别。 但是在创建测试文件时,我遇到了一个分段错误,我只是不明白为什么。错误出现在示例代码中的mov r10,[rax]。但是,当我将 mov r10,[rax] 的位置更改为 lea r11,[rax] 时,我在执行 lea 时遇到了错误。

我的程序:

global _start
section .text

_start:
mov rax,16
lea r11,[rax]
mov r10,[rax]
mov r9,rax

mov rax,60
xor edi,edi
syscall

你期望内存位置 16(0x10) 是什么?

您的密码是

mov rax,16
mov r10,[rax]

这意味着您尝试从内存地址 RAX 加载 64 位值到 R10。地址 16 通常不会映射到您的程序中 space.