• davel@lemmy.ml
    link
    fedilink
    English
    arrow-up
    51
    arrow-down
    1
    ·
    5 months ago

    Assembly code is for writing C compilers, and C compilers are for writing Lisp interpreters.

        • henfredemars@infosec.pub
          link
          fedilink
          English
          arrow-up
          5
          ·
          edit-2
          5 months ago

          There’s actually good reasons for this design. It’s easy to write a Scheme interpreter in assembly, but it’s hard to write a C compiler in assembly that handles everything correctly. Much rather write it in higher level language if possible and Scheme lowers the bar to getting there, so you can get away from using assembly as quickly as possible. Or you can copy somebody else’s Scheme implementation of a C compiler because now you’re platform independent.

          Then you can write your C compiler in C (or steal a better compiler already written in C) and close the loop. For your final step, you use the C compiler to compile itself.

      • davel@lemmy.ml
        link
        fedilink
        English
        arrow-up
        5
        ·
        edit-2
        5 months ago

        I never did get very far with the TRS-80 Editor Assembler, but that was my first exposure to such things.

        I also remember the BASIC code for the Dancing Daemon which was replete with PEEKs and POKEs, such that much of it was written in machine code.