From c3fdb442e642ca50ad4dc6c942e4ebcb9cbaad3b Mon Sep 17 00:00:00 2001 From: Shagun Agrawal Date: Sun, 4 Aug 2024 22:20:38 +0530 Subject: Add assembly generation for unary operators Adding assembly generation New opcodes, operands --- src/cljcc/tacky.clj | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/cljcc/tacky.clj') diff --git a/src/cljcc/tacky.clj b/src/cljcc/tacky.clj index e25c87f..4772766 100644 --- a/src/cljcc/tacky.clj +++ b/src/cljcc/tacky.clj @@ -61,9 +61,10 @@ (conj instructions (return-instruction val)))) (defn statement-transform [_ret-keyword exp] - (reverse (ret-instructions exp))) + {:instructions (reverse (ret-instructions exp))}) (defn tacky-generate [ast] + (reset! counter 0) (insta/transform {:statement statement-transform} ast)) (comment @@ -106,13 +107,11 @@ (pp/pprint (ret-instructions ex-ret)) - (def exprg - "int main(void) { + (def exprg + "int main(void) { return -(~(-8)); }") - (pp/pprint (parse "int main(void) {return 2;}")) - - (pp/pprint (parse exprg)) + (pp/pprint (parse "int main(void) {return 2;}")) - ,) + (pp/pprint (parse exprg))) -- cgit v1.2.3