28.02.2014 Views

Burke_et_al-NIL_Reference_Manual_0286-1984

Burke_et_al-NIL_Reference_Manual_0286-1984

Burke_et_al-NIL_Reference_Manual_0286-1984

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Random Intern<strong>al</strong> Types 8 <strong>NIL</strong> Manu<strong>al</strong><br />

2.8 Random Intern<strong>al</strong> Types<br />

Here are some of the intern<strong>al</strong>1y used types in <strong>NIL</strong> . While they should gener<strong>al</strong>ly not be seen,<br />

they may pop up on occasion either themselves or as a result of errors.<br />

2.8.1 l\1inisubrs<br />

lbe minisubr type is somewhat gratuitous: it win be flushed as a separate type someday. and<br />

its type bits reused by som<strong>et</strong>hing more uscthl. A millisubr is a speci<strong>al</strong> rOlltine within the 1'11.<br />

k~rnel: Stich routines arc caned with the VAX JSB instn.ctioll. However. they tend to have<br />

various assuned<br />

2.8.2 Modules<br />

A module. as a type. is the structure used by Nil. to contain a collection of compiled<br />

functions and the constants and jat~lstructures they ·reference. When the cumpiler compiles a file.<br />

it produces a module. When the garbagecollcctor (haha) relocates things. it rehlC,ttcs the module<br />

as a hlnck. The use of the name module for this primilhe d<strong>al</strong>Hstnlcture is it bit pr<strong>et</strong>entious .. so it<br />

will probably be c<strong>al</strong>led som<strong>et</strong>hing like compiled-code-modufe in the future.<br />

2.8.3 Intern<strong>al</strong> Markers<br />

The type si:intern<strong>al</strong>-marker is used for variolls things in 1Ioi1L. none of which should<br />

ordinarily be visible to (or touched by) the user. Objects of this type are meant to be checked<br />

for by things like the debugger and garbage-collector (to. for instance. parse stack frames). and<br />

manipulating them out of context wiUconfusc tllese programs.<br />

These objects print out as #!<br />

#fAFM-31<br />

#fPC"MARKI<br />

#!DOUBLE-FLOAT-MARK!<br />

#!NULL-ARGI<br />

followed by the name followed by!. For instance,<br />

; Stack marker for 3-arg function<br />

; c<strong>al</strong>l frame<br />

; Next slot on stack is a PC<br />

: Next two stack entries are the<br />

; representation of a double-float<br />

; Stack slot is for an argument which<br />

has not y<strong>et</strong> been computed,in a<br />

: function caU frame.<br />

MC:Nll.MAN:TYPES 36

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!