Sometimes the correct value is returned, sometimes 0, and sometimes (seemingly)random numbers... all from the same executable.

```
.section .text
.global _start
_start:
    movq    $1, %rax
    popq    %rdi
    syscall

```

For example:

```
%as -o this.o this.s ; ld -o this this.o

%./this; echo $?
1

%./this 1; echo $?
0

%./this 1 2; echo $?
3

%./this 1 2 a; echo $?
4

%./this 1 2 a f; echo $?
0

%_

```

I'm kind of new to assembly, but I was pretty confident that getting the argument count was as easy as popping it off the stack.
Am I doing something wrong, or is this just really messed up?