lisp-random / lisp86_64.lisp

Diff from to

lisp86_64.lisp

              (gen (expr)
                (cond
                  ((integerp expr) (isn :push expr))
+
                  ((atom expr) (error "unknown thing ~S" expr))
+
+                 ((= 2 (length expr))
+                  (progn
+                    (gen (second expr))
+                    
+                    (isn :pop :eax)
+                    
+                    ;; Generate arithmetic.
+                    (case (car expr)
+                      ((-) (isn :neg :eax)))
+                    
+                    ;; Push the result back onto the stack.
+                    (isn :push :eax)))
+                 
                  ((= 3 (length expr))
                   (progn
                     ;; Generate code for the first argument.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.