@Override
  public OperationResult execute(final MessageFrame frame, final EVM evm) {
    final long dst = clampedToLong(frame.popStackItem());
    final long src = clampedToLong(frame.popStackItem());
    final long length = clampedToLong(frame.popStackItem());

    final long cost = gasCalculator().dataCopyOperationGasCost(frame, Math.max(src, dst), length);
    if (frame.getRemainingGas() < cost) {
      return new OperationResult(cost, ExceptionalHaltReason.INSUFFICIENT_GAS);
    }

    frame.copyMemory(dst, src, length, true);

    return new OperationResult(cost, null);
  }
Instantiates a new Memory Copy operation.

@param gasCalculator the gas calculator
evm/src/main/java/org/hyperledger/besu/evm/operation/MCopyOperation.java