|Version 1 (modified by rme, 6 years ago) (diff)|
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)).