From 890b5f458a924e5c4257b761f772da20b9edfa88 Mon Sep 17 00:00:00 2001 From: Suleyman Farajli Date: Tue, 7 Jan 2025 00:38:25 +0400 Subject: call nasm and ld in main function --- src/main.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main.go b/src/main.go index acc275b..cc37713 100644 --- a/src/main.go +++ b/src/main.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "os" + "os/exec" "regexp" "slices" "strconv" @@ -604,7 +605,8 @@ func main() { } assemFile := srcFile[:len(srcFile) - 6] + ".s" - // binFile := srcFile[:len(srcFile) - 6] + objFile := srcFile[:len(srcFile) - 6] + ".o" + binFile := srcFile[:len(srcFile) - 6] _, err := os.Stat(srcFile) if err != nil { fmt.Fprintf(os.Stderr, "%s: error: %s.\n", progname, err) @@ -625,4 +627,15 @@ func main() { } generateX86_64(ops, w) w.Flush() + + cmd := exec.Command("nasm", "-felf64", assemFile) + if err := cmd.Run(); err != nil { + fmt.Fprintf(os.Stderr, "%s: error: failed to create object file: %s.\n", progname, err) + os.Exit(1) + } + cmd = exec.Command("ld", "-o", binFile, objFile) + if err := cmd.Run(); err != nil { + fmt.Fprintf(os.Stderr, "%s: error: failed to link object file '%s': %s.\n", progname, objFile, err) + os.Exit(1) + } } -- cgit v1.2.3