Assembly 一个系统调用,除非有一个我没有想到的查询保留或映射地址。无论如何,glibc的通用函数检查rax=-4095-1: . 另见。 mov rax,8000000000000000h ; The illustrative return valu

Assembly 一个系统调用,除非有一个我没有想到的查询保留或映射地址。无论如何,glibc的通用函数检查rax=-4095-1: . 另见。 mov rax,8000000000000000h ; The illustrative return valu,assembly,x86,nasm,x86-64,Assembly,X86,Nasm,X86 64,一个系统调用,除非有一个我没有想到的查询保留或映射地址。无论如何,glibc的通用函数检查rax=-4095-1: . 另见。 mov rax,8000000000000000h ; The illustrative return value from our syscall test rax,rax ; Perform 'test' to set flags accordingly jns Exit

一个系统调用,除非有一个我没有想到的查询保留或映射地址。无论如何,glibc的通用函数检查rax=-4095-1: . 另见。
    mov rax,8000000000000000h   ; The illustrative return value from our syscall
    test rax,rax                ; Perform 'test' to set flags accordingly 
    jns Exit                    ; If SF set, 'fall-through' to 'Error'

; Write error message to stdout:
Error:
    mov rax,4                  ; sys_write 
    mov rbx,1                  ; File descriptor 1, stdout
    mov rcx,ErrorMsg           ; Pass offset of message
    mov rdx,ERRORLEN           ; Length of error message
    int 80h                    ; Kernel call

; Exit program:
Exit:
    mov rax,1                  ; exit system call
    mov rbx,0                  ; return a code of zero
    int 80h                    ; make kernel call
test %rax, %rax
js   error
cmpl  %eax, 0xfffff000   # unsigned 2^32 - 4096, aka signed -4096
ja    error              # -4095 .. -1 is an error, anything else is non-error