aboutsummaryrefslogtreecommitdiff
path: root/src/cljcc/driver.clj
diff options
context:
space:
mode:
authorShagun Agrawal <agrawalshagun07@gmail.com>2024-08-10 19:40:08 +0530
committerShagun Agrawal <agrawalshagun07@gmail.com>2024-08-10 19:40:08 +0530
commit399bb5ab8bce44f5aeb43909dd10ad4ef5c93de1 (patch)
tree404adfe0191bb06cc222872b16a0c8616cb0d207 /src/cljcc/driver.clj
parenta0811a84e381d64069834d5c0097669d66f4b627 (diff)
Add code emission for chapter 3
Fix small bug in driver, it emitted the file in assembly step Add new instructions for code emission
Diffstat (limited to 'src/cljcc/driver.clj')
-rw-r--r--src/cljcc/driver.clj15
1 files changed, 9 insertions, 6 deletions
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)]