...
This commit is contained in:
@@ -451,9 +451,16 @@ public class Generator
|
|||||||
Debug.Assert(structType != null);
|
Debug.Assert(structType != null);
|
||||||
|
|
||||||
var structDefinition = LookupStructDefinition(structType.Namespace, structType.Name);
|
var structDefinition = LookupStructDefinition(structType.Namespace, structType.Name);
|
||||||
|
var offset = LookupStructOffset(structDefinition, memberAssignment.MemberAccess.Member);
|
||||||
|
|
||||||
var item = GenerateExpression(memberAssignment.MemberAccess.Expression);
|
var item = GenerateExpression(memberAssignment.MemberAccess.Expression);
|
||||||
|
var offsetName = GenVarName();
|
||||||
|
|
||||||
|
_builder.AppendLine($" %{offsetName} =l add {item}, {offset}");
|
||||||
|
|
||||||
var value = GenerateExpression(memberAssignment.Value);
|
var value = GenerateExpression(memberAssignment.Value);
|
||||||
|
|
||||||
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GenerateReturn(ReturnNode @return)
|
private void GenerateReturn(ReturnNode @return)
|
||||||
@@ -1441,23 +1448,26 @@ public class Generator
|
|||||||
return $"%{outputName}";
|
return $"%{outputName}";
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
throw new ArgumentOutOfRangeException(nameof(memberAccess.Member));
|
||||||
}
|
}
|
||||||
case NubStructType structType:
|
case NubStructType structType:
|
||||||
{
|
{
|
||||||
var structDefinition = LookupStructDefinition(structType.Namespace, structType.Name);
|
var structDefinition = LookupStructDefinition(structType.Namespace, structType.Name);
|
||||||
|
var offset = LookupStructOffset(structDefinition, memberAccess.Member);
|
||||||
|
|
||||||
var offsetName = GenVarName();
|
var offsetName = GenVarName();
|
||||||
_builder.AppendLine($" %{offsetName} =l add {item}, {LookupStructOffset(structDefinition, memberAccess.Member)}");
|
_builder.AppendLine($" %{offsetName} =l add {item}, {offset}");
|
||||||
|
|
||||||
var outputName = GenVarName();
|
var outputName = GenVarName();
|
||||||
_builder.AppendLine($" %{outputName} ={SQT(memberAccess.Type)} load{SQT(memberAccess.Type)} %{offsetName}");
|
_builder.AppendLine($" %{outputName} ={SQT(memberAccess.Type)} load{SQT(memberAccess.Type)} %{offsetName}");
|
||||||
|
|
||||||
return $"%{outputName}";
|
return $"%{outputName}";
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(memberAccess.Expression.Type));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new ArgumentOutOfRangeException(nameof(memberAccess.Expression.Type));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GenerateFuncCall(FuncCallNode funcCall)
|
private string GenerateFuncCall(FuncCallNode funcCall)
|
||||||
|
|||||||
Reference in New Issue
Block a user