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 }