This commit is contained in:
nub31
2025-06-14 18:34:33 +02:00
parent 9d74a3716d
commit d57d95ec8e

View File

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