On IA-32, functions are tagged as fulltag-misc (6). Therefore, there are 6 bytes (the 4 byte header and 2 extra bytes) in the lisp object before the machine code bytes start.

The two bytes between the header and the entry point are used to represent the count of 32-bit words from the header to the beginning of the (gc-able) constants. Given a tagged pointer F to a function, and the word count N, the first constant is (+ F -2 (ash N 2)).

[more later]

Last modified 12 years ago Last modified on Feb 7, 2008, 2:01:15 AM