If a contract does returns something, (whether a string or
return true/return false) how to get it’s return value ?
I mean where does the return value is stored ? Is necessary to use
RETURNDATACOPY or does the value is on the stack in the case of
return true/return false ? If it’s on the stack, how to know if the contract exited because of a problem in execution (like revert or out of gas) or because execution was successful at returning false ?
Of course, I’m talking while knowing the site or the type of return value so that using
RETURNDATASIZE isn’t required. I don’t want a Solidity or Vyper answer, but to know how things works at the bare low‐level.