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. 10 * The areas to be copied may overlap, because it first of all copies from a2 to a temporary buffer and then 11 * copies from there to a1. This makes it slower than memcpy. 12 * Returns: a1 13 */ 14 public class MemMove extends Stub { 15 public void executeStub(Environment environment) { 16 final MemoryMap memoryMap = environment.getMemoryMap(); 17 final int[] R = environment.getCpu().R; 18 final int count = R[2]; 19 final byte[] data = memoryMap.getBytes(R[1], count); 20 final ByteArray ptr1 = memoryMap.getByteArray(R[0], count, true); 21 System.arraycopy(data, 0, ptr1.getArray(), ptr1.getOffset(), count); 22 } 23 }