Functions
Functions are declared by the function
keyword. And they are of two types, functions with return values and those without.
Functions without a return value.
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract Yul {
function fnWithoutReturn(uint256 a, uint256 b) public pure returns (uint256) {
assembly {
function sum(num1, num2) {
mstore(0x80, add(num1, num2))
}
sum(a, b)
return(0x80, 0x20)
}
}
}
Functions without a return value.
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract Yul {
function fnWithReturn(uint256 a, uint256 b) public pure returns (uint256) {
assembly {
function sum(num1, num2) -> total {
total := add(num1, num2)
}
mstore(0x80, sum(a, b))
return(0x80, 0x20)
}
}
}