Why the usual way to create a contract with evm opcodes use add
and mload
, for example:
bytes memory bytecode = hex"600580600c6000396000b800602a600052b8";
...
assembly {
_address := create(0, add(bytecode, 0x20), mload(bytecode))
}
I can't understand why adds 0x20
to the initial position and why mload(bytecodes)
returns the size of bytecodes. Is someone can point me doc related I'll appreciate.
Thanks.