Part III. Internals of the
CLISP
Implementation
Prev
Next
Part III. Internals of the
CLISP
Implementation
Table of Contents
33. The source files of
CLISP
33.1. File Types
33.2. Source Pre-Processing
33.3. Files
33.3.1. Unpreprocessed
C
code
33.3.2. Other assembly language stuff
33.3.3. Lisp source files
33.3.4. External Modules
33.3.5. Documentation
33.3.6. Internationalization
33.3.7. Automatic configuration on
UNIX
34. Overview of
CLISP
's Garbage Collection
34.1. Introduction
34.2. Lisp objects in
CLISP
34.3. Object Pointer Representations
34.4. Memory Models
34.5. The burden of garbage-collection upon the rest of
CLISP
34.5.1.
object
pointer invalidation
34.5.2. Memory protection
34.6. Foreign Pointers
35. Extending
CLISP
35.1. Adding a built-in function
35.2. Adding a built-in variable
35.3. Recompilation
36. The
CLISP
bytecode specification
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.41
Last modified: 2006-10-13