import EVM from '../classes/evm.class' ; import Opcode from '../interfaces/opcode.interface' ; export class CALLDATACOPY { readonly name : string ; readonly type ? : string ; readonly wrapped : boolean ; readonly startLocation : any ; readonly copyLength : any ; constructor ( startLocation , copyLength ) { this . name = 'CALLDATACOPY' ; this . wrapped = true ; this . startLocation = startLocation ; this . copyLength = copyLength ; } toString ( ) { return ( 'msg.data[' + this . startLocation + ':(' + this . startLocation + '+' + this . copyLength + ')];' ) ; } } export default ( opcode , state ) : void => { const memoryLocation = state . stack . pop ( ) ; const startLocation = state . stack . pop ( ) ; const copyLength = state . stack . pop ( ) ; state . memory [ memoryLocation ] = new CALLDATACOPY ( startLocation , copyLength ) ; } ;