lambda_mountain 1.13.53

Compiler Backend / Programming Language Scaffolding
Documentation

main-with-argv := False_u8;

compile-text-header := λ . (: (tail(
   (let output SNil)
   (set output (SCons( (close output) (close(SAtom '.global\s_start\n_s )) )))
   (set output (SCons( (close output) (close(SAtom '.text\n_s )) )))
   (set output (SCons( (close output) (close(SAtom '_start:\n_s )) )))
   (set output (SCons( (close output) (close assemble-init-section) )))
   (if (==( main-with-argv True_u8 )) (tail(
      (set output (SCons( (close output) (close(SAtom '\tpopq\s%r8\n_s )) )))
      (set output (SCons( (close output) (close(SAtom '\tmovq\s%rsp,\s%r9\n_s )) )))
   )) ())
   (set output (SCons( (close output) (close(SAtom '\tpush\s%rbp\n_s )) )))
   (set output (SCons( (close output) (close(SAtom '\tmov\s%rsp,\s%rbp\n_s )) )))
   (if (==( main-with-argv True_u8 )) (tail(
      (set output (SCons( (close output) (close(SAtom '\tpushq\s%r8\n_s )) )))
      (set output (SCons( (close output) (close(SAtom '\tpushq\s%r9\n_s )) )))
   )) ())
   (set output (SCons( (close output) (close(SAtom '\tcall\smain\n_s )) )))
   (set output (SCons( (close output) (close(SAtom '\tmov\s%rbp,\s%rsp\n_s )) )))
   (set output (SCons( (close output) (close(SAtom '\tpop\s%rbp\n_s )) )))
   output
)) S);

compile-data-header := λ . (: (tail(
   (let output SNil)
   (set output (SCons( (close output) (close(SAtom '.data\n_s )) )))
   output
)) S);

compile-exit-cleanup := λ . (: (tail(
   (let r SNil)
   (set r (SCons( (close r) (close(SAtom '\tmov\s$60,\s%rax\n_s)) )))
   (set r (SCons( (close r) (close(SAtom '\tmov\s$0,\s%rdi\n_s)) )))
   (set r (SCons( (close r) (close(SAtom '\tsyscall\n_s)) )))
   r
)) S);