Mosa.Platform.x86.MachineCodeEmitter.WriteImmediate C# (CSharp) Method

WriteImmediate() private method

Emits an immediate operand.
private WriteImmediate ( Operand op ) : void
op Mosa.Compiler.Framework.Operand The immediate operand to emit.
return void
        private void WriteImmediate(Operand op)
        {
            Debug.Assert(!op.IsCPURegister);

            if (op.IsStackLocal)
            {
                codeStream.Write((int)op.Offset, Endianness.Little);
                return;
            }

            Debug.Assert(op.IsResolvedConstant);

            if (op.IsI1)
                codeStream.WriteByte((byte)op.ConstantSignedInteger);
            else if (op.IsU1 || op.IsBoolean)
                codeStream.WriteByte(Convert.ToByte(op.ConstantUnsignedInteger));
            else if (op.IsU2 || op.IsChar)
                codeStream.Write(Convert.ToUInt16(op.ConstantUnsignedInteger), Endianness.Little);
            else if (op.IsI2)
                codeStream.Write(Convert.ToInt16(op.ConstantSignedInteger), Endianness.Little);
            else if (op.IsI4 || op.IsI)
                codeStream.Write(Convert.ToInt32(op.ConstantSignedInteger), Endianness.Little);
            else if (op.IsU4 || op.IsPointer || op.IsU || !op.IsValueType)
                codeStream.Write(Convert.ToUInt32(op.ConstantUnsignedInteger), Endianness.Little);
            else
                throw new InvalidCompilerException();
        }