From ce28b0da566a8e85bffc084f6f529d0d90588cce Mon Sep 17 00:00:00 2001 From: Nick Briggs Date: Wed, 16 Sep 2020 15:12:58 -0700 Subject: [PATCH] Add documentation of NEWCDRCODING cdr codes --- NEWCDRCODING.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 NEWCDRCODING.md diff --git a/NEWCDRCODING.md b/NEWCDRCODING.md new file mode 100644 index 0000000..f7d1186 --- /dev/null +++ b/NEWCDRCODING.md @@ -0,0 +1,16 @@ + +The cdr-code is a 4-bit field of a 32-bit cons cell. +It is treated as an on-page indicator bit and a 3-bit scaled offset. + +Certain combinations are treated specially. + + +on-page| offset | interpretation +-------|--------|---------------------------------------------------------------------------- + 1 | 0 | CDR is NIL + 1 | 1 - 7 | CDR is at 2*offset (counted in 32-bit cells) on same page + 0 | 0 | CDR is indirect, CDR(car) + 0 | 1 - 7 | CDR is not a cons cell but is in the car of cell at 2*offset on same page +-------|--------|---------------------------------------------------------------------------- + +