At 11:49 AM 9/17/2001 -0500, Brian Wheeler wrote: >On Mon, 2001-09-17 at 11:20, Gregor N. Purdy wrote: > > > > It would also be helpful to have jump_ic and absjump_ic, rather than > > > > having to load these things into registers. > > > > > > You can use branch_ic for this. absjump is probably a bad idea since it > > > appears the return value of the opcode function is really a memory > > > address of the host machine. If an absolute value (relative to the > > > beginning of the opcode stream) was used, then it would have to be > > > relocated at load-time and wouldn't be able to remain read-only. > > > > My mental model for this thing is "Parrot is a CPU architecture" and > > a lot of what I'm trying to make it do is behave as much as possible > > in that way. So, if we are talking about a CPU architecture (ISA), > > lacking the full complement of relative and absolute jumps, register > > and constant comparisons, etc. is a bummer. > >I think we're ok on relative ops, but you're right, we're short of >absolute.
FWIW, all the absolute ops should be done against register values, not constants. There'll be ways to get absolute addresses of things like subroutines and PMCs. > > Mucking with things like memory addresses of host machines, etc. is > > important, but only at the interpreter level, not at the ISA design > > level (IMHO). > > > > I don't see a relocation issue anyway, since the way I look at the > > interpreter code is: > > > > PC === (code - start_code) > > > > So if an instruction says "absjump 43", then I know that I need > > to do: > > > > code = (start_code + 43) > > > > and if an instruction says "(rel)jump 43" then I know that I need > > to do: > > > > code += 43 > > > > neither of these is a problem in my eyes. Both of those ought to be plain relative jumps. The absolute jump should be resolved by the assembler to a relative offset. ;) >Ok, they're not really problems, per se, but the way the interpreter is >constructed, the ops *always* return the offset to the next PC. Nope. The ops always return the absolute next PC. The un-preprocessed versions generally return relative values which the preprocessor munches (the AUTO_OP ones) but that's just a preprocessor thing. Dan --------------------------------------"it's like this"------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk