mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-20 21:08:51 +00:00
35 lines
No EOL
1 KiB
C#
35 lines
No EOL
1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Indy.IL2CPU.Assembler.X86;
|
|
using Indy.IL2CPU.Plugs;
|
|
using Assembler = Indy.IL2CPU.Assembler.Assembler;
|
|
using CPUx86 = Indy.IL2CPU.Assembler.X86;
|
|
|
|
namespace Indy.IL2CPU.IL.X86.CustomImplementations.System.Assemblers {
|
|
public class Buffer_BlockCopy: AssemblerMethod {
|
|
|
|
/*public static void BlockCopy(
|
|
* Array src, [ebp + 24]
|
|
* int srcOffset, [ebp + 20]
|
|
* Array dst, [ebp + 16]
|
|
* int dstOffset, [ebp + 12]
|
|
* int count); [ebp + 8]
|
|
*/
|
|
public override void Assemble(Indy.IL2CPU.Assembler.Assembler aAssembler) {
|
|
new CPUx86.Move("esi", "[ebp + 24]"); // src
|
|
new CPUx86.Add("esi", "16");
|
|
new CPUx86.Move("eax", "[ebp + 20]");
|
|
new CPUx86.Add("esi", "eax");
|
|
|
|
new CPUx86.Move("edi", "[ebp + 16]");
|
|
new CPUx86.Add("edi", "16");
|
|
new CPUx86.Move("eax", "[ebp + 12]");
|
|
new CPUx86.Add("edi", "eax");
|
|
|
|
new CPUx86.Move("ecx", "[ebp + 8]");
|
|
new CPUx86.RepeatMovsd();
|
|
}
|
|
}
|
|
} |