pragma solidity ^0.4.24; contract FunctionIdTranslator { function getNum(uint256 _num) public pure returns(uint[]) { uint[] memory u_array = new uint[](_num); for(uint i=0; i<_num; i++) { u_array[i] = i + _num; } return u_array; } function hoge(uint256 _num, uint outsize) public view returns(uint[]) { address libaddr = address(this); bytes4 sig = bytes4(keccak256("getNum(uint256)")); assembly { let freep := mload(0x40) let outp := add(freep, calldatasize) mstore(0x40, outp) mstore(freep, sig) calldatacopy(add(freep, 0x04), 0x04, calldatasize) let res := delegatecall(gas, libaddr, freep, calldatasize, outp, outsize) if eq(res, 0) { revert(0, 0) } return(outp, returndatasize) } } }
0.4.24