Leo wrote:

>> 1. How do you handle variant (either string or numeric) data? Do you set
>> up one of the string registers with a string "ssnnnnssnnnn" to keep track
>> of datatypes?
> N/Y. This would need probably a new PMC type.

OK. This is pretty common with a lot of scripting languages, so I was suprised 
Parrot didn't handle it at a lower level.

> > 2. What happens if a routine needs more than 32 variables of one
> > datatype? Do you use hash tables? (Sounds like Lua)
>
> imcc (the assembler) generates spill code, using a PerlArray.

Ah, so that's what "spill code" means. Perhaps a definition of the term in the 
document might be helpful.

> > 4. What's a frame? (ex: push_p : Push the current frame of the PMC...)
>
> It's a register frame, used for subroutine calling. Current registers of
> one type are copied to a save area and restored from there on sub return.

OK, thanks. I was guessing that it might be, but I wasn't sure it didn't have 
to do with native calls as well.

> > 9. Is there a substring op? If not, how do you get a substring?
>
> 3 variants of substr s. core.ops

D'oh! I had forgotton that the ops were extensible, even though I had read 
through them. I guess I expected those ops to be documented in the Assembly 
Language document anyway.

> > 10. I didn't see any equality (eq, gt, le, etc.) opcodes for comparing
> > values.
>
> Again, please consult core.ops, they have exactly above names.

Urgh. For some reason, I expected them in the core docs also.

Thanks again!

-- David Cuny

Reply via email to