From 399bb5ab8bce44f5aeb43909dd10ad4ef5c93de1 Mon Sep 17 00:00:00 2001 From: Shagun Agrawal Date: Sat, 10 Aug 2024 19:40:08 +0530 Subject: Add code emission for chapter 3 Fix small bug in driver, it emitted the file in assembly step Add new instructions for code emission --- src/cljcc/driver.clj | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/cljcc/driver.clj') diff --git a/src/cljcc/driver.clj b/src/cljcc/driver.clj index b039ba4..2869561 100644 --- a/src/cljcc/driver.clj +++ b/src/cljcc/driver.clj @@ -34,6 +34,13 @@ (defn assemble-step [directory filename] (let [file-without-ext (remove-extension filename) assembly-file (make-file-name directory file-without-ext "s") + preprocessed-file-path (make-file-name directory (remove-extension filename) "i") + file (io/file preprocessed-file-path) + source (slurp file) + assembly-ast (c/generate-assembly source) + assembly-output (e/emit assembly-ast) + assembly-out-file-path (make-file-name directory (remove-extension filename) "s") + _ (spit assembly-out-file-path assembly-output) output-file (str directory "/" file-without-ext) output (handle-sh "gcc" assembly-file "-o" output-file)] (if (= 1 (:exit output)) @@ -61,12 +68,8 @@ (let [preprocessed-file-path (make-file-name directory (remove-extension filename) "i") file (io/file preprocessed-file-path) source (slurp file) - assembly-ast (c/generate-assembly source) - assembly-output (e/emit assembly-ast) - out-file-path (make-file-name directory (remove-extension filename) "s")] - (spit out-file-path assembly-output) - (log/info (str "Succesfully generated assembly ast.\n" assembly-ast)) - (log/info (str "Succesfully generated assembly file.\n" assembly-output)))) + assembly-ast (c/generate-assembly source)] + (log/info (str "Succesfully generated assembly ast.\n" assembly-ast)))) (defn cleanup-step [directory filename] (let [file-without-ext (remove-extension filename)] -- cgit v1.2.3