尝试将寄存器设置为负值会导致SEGFAULT

时间:2019-01-16 22:56:14

标签: assembly x86 nasm

是否不允许将寄存器设置为负值?我发现如果将寄存器设置为-1,它将只是将其设置为最大值。 mov eax, -1导致分段错误:

main.nasm:

BITS 32

              org     0x08048000

ehdr:                                                 ; Elf32_Ehdr
              db      0x7F, "ELF", 1, 1, 1, 0         ;   e_ident
      times 8 db      0
              dw      2                               ;   e_type
              dw      3                               ;   e_machine
              dd      1                               ;   e_version
              dd      _start                          ;   e_entry
              dd      phdr - $$                       ;   e_phoff
              dd      0                               ;   e_shoff
              dd      0                               ;   e_flags
              dw      ehdrsize                        ;   e_ehsize
              dw      phdrsize                        ;   e_phentsize
              dw      1                               ;   e_phnum
              dw      0                               ;   e_shentsize
              dw      0                               ;   e_shnum
              dw      0                               ;   e_shstrndx

ehdrsize      equ     $ - ehdr

phdr:                                                 ; Elf32_Phdr
              dd      1                               ;   p_type
              dd      0                               ;   p_offset
              dd      $$                              ;   p_vaddr
              dd      $$                              ;   p_paddr
              dd      filesize                        ;   p_filesz
              dd      filesize                        ;   p_memsz
              dd      5                               ;   p_flags
              dd      0x1000                          ;   p_align

phdrsize      equ     $ - phdr

_start:
              mov     eax, -1
              xor     al, al
              inc     al
              xor     bl, bl
              int     80h

filesize      equ     $ - $$

这些是我的编译命令:

nasm -f bin -o main main.nasm
chmod +x main

0 个答案:

没有答案