I compiled a simple smart contract with --bin option (vs --bin-runtime), and looked at the assembly code. I can see that at first, the "setup" code copy all the run-time code with CODECOPY to memory, then RETURN; STOP.
But what happen after RETURN; STOP? I suppose this stops everything, but logically the main code should run next, so I am confused.
To make sense, after RETURN; STOP, EVM should continue to execute the code staying in returned memory, but this does not seem to be explained in Ethereum specs?