Иногда возвращается правильное значение, иногда 0, а иногда (на первый взгляд) случайные числа... все из одного и того же исполняемого файла.
.section .text
.global _start
_start:
movq $1, %rax
popq %rdi
syscall
Например:
%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
%_
Я новичок в ассемблере, но я был уверен, что получить количество аргументов так же просто, как вытолкнуть его из стека. Я что-то делаю не так, или это просто действительно испорчено?