diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2024-05-23 13:47:06 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2024-05-23 13:47:06 -0400 |
| commit | f3a84599a7034c2e746b952cd4bc9aa5967e4083 (patch) | |
| tree | 5d40e0ed9484a471aaadfbc046ae924c19789c01 /symbol.go | |
| parent | 9eab2215c7bb8dbe017987078497fa6c7d8943c3 (diff) | |
Refactoring Project
Diffstat (limited to 'symbol.go')
| -rwxr-xr-x | symbol.go | 52 |
1 files changed, 52 insertions, 0 deletions
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 + } + } + } +} |
