Hi Werner,
* Exit with a
zero value as quickly as possible.
...
> _exit(0);
...
Then again _exit(0) is a useless optimization. It
saves three closes
for files that are bound to be closed at image tear down.
It also avoids checking the atexit(3) list, yet here on Linux x86_64
with glibc 2.26-6, `_exit(0)' is more instructions to execute than
`return 0', as measured with `perf stat -e instructions ./exit'.
`return 0' can just do
xor %eax, %eax
retq
whereas _exit makes room on the stack before the JSR, and that's through
the dynamic-linking table, `PLT'.
sub $0x8, %rsp
xor %edi, %edi
callq 530 <_exit@plt>
Even with `-static' linking, `return 0' wins on instruction count.
--
Cheers, Ralph.
https://plus.google.com/+RalphCorderoy