Chapter 37. The CLISP bytecode specification

Table of Contents

37.1. Introduction
37.2. The virtual machine
37.3. The structure of compiled functions
37.4. The general structure of the instructions
37.5. The instruction set
37.5.1. Instructions for constants
37.5.2. Instructions for lexical variables
37.5.3. Instructions for dynamic variables
37.5.4. Instructions for stack operations
37.5.5. Instructions for control flow, jumps
37.5.6. Instructions for lexical environment, creation of closures
37.5.7. Instructions for function calls
37.5.8. Instructions for optional and keyword parameters
37.5.9. Instructions for multiple values
37.5.10. Instructions for BLOCK and RETURN-FROM
37.5.11. Instructions for TAGBODY and GO
37.5.12. Instructions for CATCH and THROW
37.5.13. Instructions for UNWIND-PROTECT
37.5.14. Instructions for HANDLER-BIND
37.5.15. Instructions for some inlined functions
37.5.16. Combined instructions
37.5.17. Shortcut instructions
37.6. Examining compiled closures
37.7. Bytecode Design
37.7.1. When to add a new bytecode?
37.7.2. Why JMPTAIL?

These notes document CLISP version 2.49+Last modified: 2016-09-05