Chapter 36. The CLISP bytecode specification

Table of Contents

36.1. Introduction
36.2. The virtual machine
36.3. The structure of compiled functions
36.4. The general structure of the instructions
36.5. The instruction set
36.5.1. Instructions for constants
36.5.2. Instructions for lexical variables
36.5.3. Instructions for dynamic variables
36.5.4. Instructions for stack operations
36.5.5. Instructions for control flow, jumps
36.5.6. Instructions for lexical environment, creation of closures
36.5.7. Instructions for function calls
36.5.8. Instructions for optional and keyword parameters
36.5.9. Instructions for multiple values
36.5.10. Instructions for BLOCK and RETURN-FROM
36.5.11. Instructions for TAGBODY and GO
36.5.12. Instructions for CATCH and THROW
36.5.13. Instructions for UNWIND-PROTECT
36.5.14. Instructions for HANDLER-BIND
36.5.15. Instructions for some inlined functions
36.5.16. Combined instructions
36.5.17. Shortcut instructions
36.6. Bytecode Design
36.6.1. When to add a new bytecode?
36.6.2. Why JMPTAIL?

These notes document CLISP version 2.41Last modified: 2006-10-13