+;; (define (amd64-abi f)
+;; ; preserve registers
+;; (emit "push %rbp")
+;; ;; (emit "push %rbx")
+;; ;; (for-each (lambda (i)
+;; ;; (emit (string-append
+;; ;; "push %r"
+;; ;; (number->string i))))
+;; ;; '(12 13 14 15))
+
+;; (emit "movq %rsp, %rbp") ; set up the base pointer
+
+;; (f) ; call stuff
+;; ; restore preserved registers
+;; ;; (for-each (lambda (i)
+;; ;; (emit (string-append
+;; ;; "pop %r"
+;; ;; (number->string i))))
+;; ;; '(15 14 13 12))
+;; ;; (emit "pop %rbx")
+;; (emit "pop %rbp")
+;; (emit "ret"))