pro*_*fpv 1 assembly x86-64 nasm segmentation-fault
为什么会出现分段错误?
我用的nasm -f elf64 t.asm -o t.o ld t.o -o t是linux下的编译。
我已经做了我能想到的一切。
section .data:
variable_int db 1
variable_string db "yaaaa", 10
section .text:
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, variable_string
mov rdx, 14
syscall
mov rax, 60
mov rdi, 0
syscall
Run Code Online (Sandbox Code Playgroud)
section .data:
section .text:
Run Code Online (Sandbox Code Playgroud)
省略冒号。节指令不是标签,冒号被解析为节名称的一部分。这会导致您的数据被放入名为 的节中.data:,而链接器期望使用.data不带冒号的节。这可能会导致该节被授予错误的权限(例如.text:不可执行的节)。
还:
mov rdx, 14
Run Code Online (Sandbox Code Playgroud)
这个参数是要写入的数据长度,你的字符串不是14字节长;它只有 6。这可能会导致写入额外的垃圾(可能是也可能不是可见字符),或者如果运行到未映射的内存中,系统调用可能会失败。
| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |