blob: 2101868f70c1b834b730c4ee15fd2aee7134a030 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
namespace Q1.Assembler;
using CommandLine;
public class Program
{
static void Main(string[] args)
{
Parser.Default.ParseArguments<AssemblerOptions>(args).WithParsed(Program.Main);
}
public static void Main(AssemblerOptions assemblerOptions)
{
assemblerOptions.InputFile = assemblerOptions.InputFile;
string[] input = File.ReadAllLines(assemblerOptions.InputFile);
try
{
Assembler assembler = new(input);
byte[] bin = assembler.Assemble().ToArray();
if (bin.Length > 8 * 1024)
throw new AssemblerException("Assembled binary exceeds maximum size of 8KB.");
File.WriteAllBytes(assemblerOptions.OutputFile, bin);
Console.WriteLine($"Assembled {assemblerOptions.InputFile} to {assemblerOptions.OutputFile} ({bin.Length} bytes)");
}
catch (AssemblerException ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Error.WriteLine($"Error: {ex.Message}");
Console.ResetColor();
Environment.Exit(1);
}
}
}
|