Okay, one of the first things we need to do to support multiple 
segment bytecode is to be able to swap in constant tables. (Since we 
access constants by offset from the table, and we don't want to go 
fix up the offsets every time we load in bytecode--ick. Slow)

So...

   setconstant ix

Takes the address *at* (not of) offset X and sticks it in the 
interpreter structure as the address of the current constant table

   pushconstanttable

Push the current constant table pointer onto the system stack

   popconstanttable

Pop the constant table pointer from the system stack


This has an implication for bytecode generation--it means that at 
least one pointer-sized word at the end of the bytecode will get 
altered at load time. This is OK--we can use it as the bytecode fixup 
section. (I expect we'll find other things we need to use as fixups 
along the way)
-- 
                                         Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
[EMAIL PROTECTED]                         have teddy bears and even
                                       teddy bears get drunk

Reply via email to