小编Luc*_*cas的帖子

在函数内部使用 DB(定义字节)时出现分段错误

我很好奇如果我把db 0x41这个.text部分放在它通常所属的地方,而不是放在.data它通常所属的地方,会发生什么。它会出现段错误,但到底为什么呢?

下面的代码是在 Mint 19.1 中使用 和 进行编译、链接和执行nasmld

无段错误:

global _start
section .data
db 0x41
section .text
_start:
    mov rax, 60    ; Exit(0) syscall
    xor rdi, rdi
    syscall
Run Code Online (Sandbox Code Playgroud)

段错误:

global _start
section .text
_start:
    db 0x41
    mov rax, 60     ; Exit(0) syscall
    xor rdi, rdi
    syscall
Run Code Online (Sandbox Code Playgroud)

我使用以下命令来组装、链接和运行它:

global _start
section .data
db 0x41
section .text
_start:
    mov rax, 60    ; Exit(0) syscall
    xor rdi, rdi
    syscall
Run Code Online (Sandbox Code Playgroud)

assembly x86-64 nasm machine-code

3
推荐指数
1
解决办法
862
查看次数

标签 统计

assembly ×1

machine-code ×1

nasm ×1

x86-64 ×1