<Ul> <Li> While the input (parameter n) is loaded from the stack, its precise position on the stack is not specified . The C compiler calculates this based on the calling conventions of the target architecture . </Li> <Li> The assembly language version loads the input parameter from the stack into a register and in each iteration of the loop decrements the value in the register, never altering the value in the memory location on the stack . The C compiler could do the same or could update the value in the stack . Which one it chooses is an implementation decision completely hidden from the code author (and one with no side effects, thanks to C language standards). </Li> <Li> The local variables a, b and c are abstractions that do not specify any specific storage location on the hardware . The C compiler decides how to actually store them for the target architecture . </Li> <Li> The return function specifies the value to return, but does not dictate how it is returned . The C compiler for any specific architecture implements a standard mechanism for returning the value . Compilers for the x86 architecture typically (but not always) use the EAX register to return a value, as in the assembly language example (the author of the assembly language example has chosen to copy the C convention but assembly language does not require this). </Li> </Ul> <Li> While the input (parameter n) is loaded from the stack, its precise position on the stack is not specified . The C compiler calculates this based on the calling conventions of the target architecture . </Li> <Li> The assembly language version loads the input parameter from the stack into a register and in each iteration of the loop decrements the value in the register, never altering the value in the memory location on the stack . The C compiler could do the same or could update the value in the stack . Which one it chooses is an implementation decision completely hidden from the code author (and one with no side effects, thanks to C language standards). </Li> <Li> The local variables a, b and c are abstractions that do not specify any specific storage location on the hardware . The C compiler decides how to actually store them for the target architecture . </Li>

What is low level middle level high level language