From 1680bc5146b25d3631e6b7bfee3946ef59d906fd Mon Sep 17 00:00:00 2001 From: Astatin Date: Thu, 19 Sep 2024 18:55:25 +0900 Subject: Create 1st draft of new assembler in go --- main.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..101e8d7 --- /dev/null +++ b/main.go @@ -0,0 +1,55 @@ +package main + +import ( + "fmt" + "io" + "os" + "strings" +) + +func main() { + if len(os.Args) != 3 { + fmt.Fprintf(os.Stderr, "Usage: gbasm [input_file] [output_file]") + os.Exit(1) + } + + input_file_name := os.Args[1] + output_file_name := os.Args[2] + + input_file, err := os.Open(input_file_name) + if err != nil { + fmt.Fprintf(os.Stderr, "Error while opening input file: %s", err.Error()) + os.Exit(1) + } + + input, err := io.ReadAll(input_file) + if err != nil { + fmt.Fprintf(os.Stderr, "Error while reading input file: %s", err.Error()) + os.Exit(1) + } + + lines := strings.Split(string(input), "\n") + + result := []byte{} + for _, line := range lines { + next_instruction, err := Instructions.Parse(line) + if err != nil { + fmt.Fprintf(os.Stderr, "%s", err.Error()) + os.Exit(1) + } + + result = append(result, next_instruction...) + } + + output_file, err := os.Create(output_file_name) + if err != nil { + fmt.Fprintf(os.Stderr, "Error while opening output file: %s", err.Error()) + os.Exit(1) + } + + _, err = output_file.Write(result) + if err != nil { + fmt.Fprintf(os.Stderr, "Error while writing to output file: %s", err.Error()) + os.Exit(1) + } +} -- cgit v1.2.3-70-g09d2