mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-30 21:00:30 +00:00
31 lines
No EOL
1.1 KiB
C#
31 lines
No EOL
1.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Indy.IL2CPU.Compiler;
|
|
|
|
namespace Indy.IL2CPU.IL.X86 {
|
|
[OpCode(OpCodeEnum.Stelem)]
|
|
public class Stelem: Op {
|
|
private Type mType;
|
|
private string mNextLabel;
|
|
private string mCurLabel;
|
|
private uint mCurOffset;
|
|
private MethodInformation mMethodInformation;
|
|
|
|
public Stelem(ILReader aReader, MethodInformation aMethodInfo)
|
|
: base(aReader, aMethodInfo) {
|
|
mType = aReader.OperandValueType;
|
|
if (mType == null)
|
|
throw new Exception("Unable to determine Type!");
|
|
mMethodInformation = aMethodInfo;
|
|
mCurOffset = aReader.Position;
|
|
mCurLabel = IL.Op.GetInstructionLabel(aReader);
|
|
mNextLabel = IL.Op.GetInstructionLabel(aReader.NextPosition);
|
|
}
|
|
|
|
public override void DoAssemble() {
|
|
var xElementSize = GetService<IMetaDataInfoService>().GetFieldStorageSize(mType);
|
|
Stelem_Ref.Assemble(Assembler, xElementSize, GetServiceProvider(), mCurLabel, mMethodInformation, mCurOffset, mNextLabel);
|
|
}
|
|
}
|
|
} |