From f3a84599a7034c2e746b952cd4bc9aa5967e4083 Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Thu, 23 May 2024 13:47:06 -0400 Subject: Refactoring Project --- symbol.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 symbol.go (limited to 'symbol.go') diff --git a/symbol.go b/symbol.go new file mode 100755 index 0000000..f63bb8e --- /dev/null +++ b/symbol.go @@ -0,0 +1,52 @@ +package main + +import ( + "bufio" + "os" + "regexp" + "strings" +) + +// Map for labels and their addresses +var labels map[string]uint = make(map[string]uint) + +func LabelFind(path string) { + file, err := os.Open(path) + if err != nil { + panic(err) + } + defer file.Close() + + input := bufio.NewScanner(file) + + for i := 0; input.Scan(); i += 4 { + k := input.Text() + if k == "" { + i -= 4 + continue + } else if k == ".text" || k == ".data" { + i += 4 + continue + } + s, err := Parse(k) + if err != nil { + panic(err) + } + + if len(s) == 1 && s[0] == "" { + i -= 4 + continue + } + + hasLabel, err := regexp.MatchString("^.*:", s[0]) + if err != nil { + panic(err) + } + if hasLabel { + labels[strings.ReplaceAll(s[0], ":", "")] = uint(i) + if len(s) == 1 { + i -= 4 + } + } + } +} -- cgit v1.2.3