小编Sha*_*avi的帖子

为什么 Linux 上的 NASM 会更改 x86_64 程序集中的寄存器

我是 x86_64 汇编编程的新手。我正在用 x86_64 程序集编写简单的“Hello World”程序。下面是我的代码,它运行得很好。

global _start

section .data

    msg: db "Hello to the world of SLAE64", 0x0a
    mlen equ $-msg

section .text
    _start:
            mov rax, 1
            mov rdi, 1
            mov rsi, msg
            mov rdx, mlen
            syscall

            mov rax, 60
            mov rdi, 4
            syscall 
Run Code Online (Sandbox Code Playgroud)

现在,当我在 gdb 中反汇编时,它会给出以下输出:

(gdb) disas
Dump of assembler code for function _start:
=> 0x00000000004000b0 <+0>:     mov    eax,0x1
   0x00000000004000b5 <+5>:     mov    edi,0x1
   0x00000000004000ba <+10>:    movabs rsi,0x6000d8
   0x00000000004000c4 <+20>:    mov    edx,0x1d
   0x00000000004000c9 <+25>:    syscall
   0x00000000004000cb <+27>:    mov …
Run Code Online (Sandbox Code Playgroud)

assembly x86-64 nasm micro-optimization shellcode

4
推荐指数
2
解决办法
1274
查看次数

标签 统计

assembly ×1

micro-optimization ×1

nasm ×1

shellcode ×1

x86-64 ×1