quel est le cmpq instruction?

J'ai lu la définition suivante pour les syscall:

.text
.globl syscall
.type   syscall,%function
.align 16
syscall:
    movq %rdi, %rax     /* Syscall number -> rax.  */
    movq %rsi, %rdi     /* shift arg1 - arg5.  */
    movq %rdx, %rsi
    movq %rcx, %rdx
    movq %r8, %r10
    movq %r9, %r8
    movq 8(%rsp),%r9    /* arg6 is on the stack.  */
    syscall         /* Do the system call.  */
    cmpq $-4095, %rax   /* Check %rax for error.  */
    jae __syscall_error     /* Branch forward if it failed.  */
    ret         /* Return to caller.  */

.size syscall,.-syscall

J'ai vu il a expliqué que la ligne cmpq $-4095 %rax détermine si %rax contient une valeur comprise entre -1 et -4095. Comment faut-il faire? Exactement ce que fait le cmpq instruction?

OriginalL'auteur brooks94 | 2014-01-29