remix-project mirror
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
remix-project/libs/remix-analyzer/test/analysis/test-contracts/solidity-v0.5/assembly.sol

31 lines
981 B

pragma solidity >=0.4.9 <0.6.0;
contract test {
address owner;
function at(address _addr) public returns (bytes memory o_code) {
assert(_addr != address(0x0));
assembly {
// retrieve the size of the code, this needs assembly
let size := extcodesize(_addr)
// allocate output byte array - this could also be done without assembly
// by using o_code = new bytes(size)
o_code := mload(0x40)
// new "memory end" including padding
mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f))))
// store length in memory
mstore(o_code, size)
// actually retrieve the code, this needs assembly
extcodecopy(_addr, add(o_code, 0x20), 0, size)
}
}
function bla() public {
require(tx.origin == owner);
msg.sender.send(19);
assembly {
}
}
}