> Try implementing a recursive function call in x86 assembler to get a real idea of low level.
Isn't that pretty easy? Recursion is just a function calling itself, directly or indirectly.
Here's the simplest possible recursive function in x86 assembler. It simply causes a stack overflow.
recursion:
call recursion
That's it.
Tail recursive version would be simply a jump:
recursion:
jmp recursion
Here's the simplest terminating version I could think of:
recursion:
dec eax
jz rec_exit
call recursion
rec_exit:
ret