Files
nub-lang/src/compiler/CLI/QBE.cs
nub31 19c309c494 ...
2025-06-27 15:55:32 +02:00

38 lines
970 B
C#

using System.Diagnostics;
namespace CLI;
public static class QBE
{
public static async Task<string?> Invoke(string ssa)
{
using var process = new Process();
process.StartInfo = new ProcessStartInfo
{
FileName = "qbe",
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
};
process.Start();
await process.StandardInput.WriteAsync(ssa);
process.StandardInput.Close();
await process.WaitForExitAsync();
var errors = await process.StandardError.ReadToEndAsync();
if (!string.IsNullOrWhiteSpace(errors))
{
await Console.Error.WriteLineAsync("qbe error:\n" + errors);
}
var asm = await process.StandardOutput.ReadToEndAsync();
return process.ExitCode == 0 ? asm : null;
}
}