Returning values
Assembly blocks can return values to their parent scope. Since variables get deallocated after the block execution, returning values from an assembly block can become quite important. There are a couple of ways to return values from the assembly block.
One way to return values from a function that, in turn, gets a value from assembly code is to use a variable name in the function signature. The same variable should be assigned a value from the assembly code. The next function shown declares a return
type using retval
as its name. In assembly code, the retval
variable is assigned a constant value, and this gets automatically returned as part of the function's return
value. Note that the return
keyword or opcode is not used in this case:
function usingReturnVariable() public pure returns (uint256 retval) { assembly { ...