...
This commit is contained in:
@@ -193,26 +193,14 @@ public static class QBEGenerator
|
|||||||
{
|
{
|
||||||
case NubPrimitiveType primitiveType:
|
case NubPrimitiveType primitiveType:
|
||||||
{
|
{
|
||||||
switch (primitiveType.Kind)
|
return primitiveType.Kind switch
|
||||||
{
|
{
|
||||||
case PrimitiveTypeKind.I64:
|
PrimitiveTypeKind.I64 or PrimitiveTypeKind.U64 or PrimitiveTypeKind.F64 => 8,
|
||||||
case PrimitiveTypeKind.U64:
|
PrimitiveTypeKind.I32 or PrimitiveTypeKind.U32 or PrimitiveTypeKind.F32 or PrimitiveTypeKind.Bool => 4,
|
||||||
case PrimitiveTypeKind.F64:
|
PrimitiveTypeKind.I16 or PrimitiveTypeKind.U16 => 2,
|
||||||
return 8;
|
PrimitiveTypeKind.I8 or PrimitiveTypeKind.U8 => 1,
|
||||||
case PrimitiveTypeKind.I32:
|
_ => throw new ArgumentOutOfRangeException()
|
||||||
case PrimitiveTypeKind.U32:
|
};
|
||||||
case PrimitiveTypeKind.F32:
|
|
||||||
return 4;
|
|
||||||
case PrimitiveTypeKind.I16:
|
|
||||||
case PrimitiveTypeKind.U16:
|
|
||||||
return 2;
|
|
||||||
case PrimitiveTypeKind.I8:
|
|
||||||
case PrimitiveTypeKind.U8:
|
|
||||||
case PrimitiveTypeKind.Bool:
|
|
||||||
return 1;
|
|
||||||
default:
|
|
||||||
throw new ArgumentOutOfRangeException();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
case NubStructType nubStructType:
|
case NubStructType nubStructType:
|
||||||
{
|
{
|
||||||
@@ -247,28 +235,16 @@ public static class QBEGenerator
|
|||||||
{
|
{
|
||||||
case NubPrimitiveType primitiveType:
|
case NubPrimitiveType primitiveType:
|
||||||
{
|
{
|
||||||
switch (primitiveType.Kind)
|
return primitiveType.Kind switch
|
||||||
{
|
{
|
||||||
case PrimitiveTypeKind.I64:
|
PrimitiveTypeKind.I64 or PrimitiveTypeKind.U64 => 8,
|
||||||
case PrimitiveTypeKind.U64:
|
PrimitiveTypeKind.I32 or PrimitiveTypeKind.U32 or PrimitiveTypeKind.Bool => 4,
|
||||||
return 8;
|
PrimitiveTypeKind.I16 or PrimitiveTypeKind.U16 => 2,
|
||||||
case PrimitiveTypeKind.I32:
|
PrimitiveTypeKind.I8 or PrimitiveTypeKind.U8 => 1,
|
||||||
case PrimitiveTypeKind.U32:
|
PrimitiveTypeKind.F64 => 8,
|
||||||
return 4;
|
PrimitiveTypeKind.F32 => 4,
|
||||||
case PrimitiveTypeKind.I16:
|
_ => throw new ArgumentOutOfRangeException()
|
||||||
case PrimitiveTypeKind.U16:
|
};
|
||||||
return 2;
|
|
||||||
case PrimitiveTypeKind.I8:
|
|
||||||
case PrimitiveTypeKind.U8:
|
|
||||||
case PrimitiveTypeKind.Bool:
|
|
||||||
return 1;
|
|
||||||
case PrimitiveTypeKind.F64:
|
|
||||||
return 8;
|
|
||||||
case PrimitiveTypeKind.F32:
|
|
||||||
return 4;
|
|
||||||
default:
|
|
||||||
throw new ArgumentOutOfRangeException();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
case NubStructType nubStructType:
|
case NubStructType nubStructType:
|
||||||
{
|
{
|
||||||
@@ -298,8 +274,7 @@ public static class QBEGenerator
|
|||||||
}
|
}
|
||||||
case NubFixedArrayType nubFixedArrayType:
|
case NubFixedArrayType nubFixedArrayType:
|
||||||
{
|
{
|
||||||
int elementSize = SizeOf(nubFixedArrayType.ElementType);
|
return SizeOf(nubFixedArrayType.ElementType) * nubFixedArrayType.Capacity + 8;
|
||||||
return elementSize * nubFixedArrayType.Capacity + 8;
|
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
@@ -493,6 +468,7 @@ public static class QBEGenerator
|
|||||||
};
|
};
|
||||||
_builder.Append(qbeType + ", ");
|
_builder.Append(qbeType + ", ");
|
||||||
}
|
}
|
||||||
|
|
||||||
_builder.AppendLine("}");
|
_builder.AppendLine("}");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -875,6 +851,7 @@ public static class QBEGenerator
|
|||||||
{
|
{
|
||||||
throw new NotSupportedException("There is nothing to address in another namespace");
|
throw new NotSupportedException("There is nothing to address in another namespace");
|
||||||
}
|
}
|
||||||
|
|
||||||
return _variables.Single(x => x.Name == identifier.Name).Pointer;
|
return _variables.Single(x => x.Name == identifier.Name).Pointer;
|
||||||
case MemberAccessNode memberAccess:
|
case MemberAccessNode memberAccess:
|
||||||
return GenerateMemberAccessPointer(memberAccess);
|
return GenerateMemberAccessPointer(memberAccess);
|
||||||
|
|||||||
Reference in New Issue
Block a user