View Javadoc

1   package com.tapina.robe.swi.clib.string;
2   
3   import com.tapina.robe.runtime.ByteArray;
4   import com.tapina.robe.runtime.Environment;
5   import com.tapina.robe.runtime.MemoryMap;
6   import com.tapina.robe.swi.clib.Stub;
7   
8   /***
9    * This function copies a3 characters from a2 to a1. The areas to be copied must not overlap.
10   * If you want to copy between overlapping objects, use memmove .
11   * Returns: a1
12   */
13  public class MemCpy extends Stub {
14      public void executeStub(Environment environment) {
15          final MemoryMap memoryMap = environment.getMemoryMap();
16          final int[] R = environment.getCpu().R;
17          final int count = R[2];
18          final ByteArray ptr2 = memoryMap.getByteArray(R[1], count, false);
19          final ByteArray ptr1 = memoryMap.getByteArray(R[0], count, true);
20          System.arraycopy(ptr2.getArray(), ptr2.getOffset(), ptr1.getArray(), ptr1.getOffset(), count);
21      }
22  }