24 lines
773 B
Org Mode
24 lines
773 B
Org Mode
#+title: representation of Scheme types
|
||
|
||
the Scheme unitype is encoded as ~(ref eq)~ with immediates in ~(ref i31)~ and heap objects in ~$heap-object~:
|
||
#+begin_src wat
|
||
(type $heap-object (sub (struct (field $hash (mut i32)))))
|
||
#+end_src
|
||
|
||
* immediates
|
||
|
||
all immediates are stored in ~(ref i31)~ and thus must fit in 31 bits. the most important immediate, the integer, is indicated by a null low bit.
|
||
#+begin_example
|
||
XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX00
|
||
||
|
||
|\ used by wasm's i31 rep
|
||
zero indicates a 30-bit fixnum /
|
||
in the upper bits
|
||
#+end_example
|
||
|
||
| type/value | low bits |
|
||
|------------+----------|
|
||
| small int | 0 |
|
||
| ~false~ | 01 |
|
||
| ~true~ | 11 |
|