On Aug 10, 2011 2:23 PM, "David Edelsohn" <dje....@gmail.com> wrote: > > On Wed, Aug 10, 2011 at 4:26 AM, Michael Hudson-Doyle <mica...@gmail.com> > wrote: > > > There are already fields that behave in unusual ways -- see > > > > https://bitbucket.org/pypy/pypy/src/f8c92c646275/pypy/jit/backend/ppc/ppcgen/ppc_field.py#cl-55 > > > > I think you should be able to add your fields in this fashion -- in > > fact, the IField looks a teensy bit like how the displacement field > > should be already. The split encodings should be fairly easy too, > > although there might be some paranoid code checking that fields don't > > overlap that you need to change. > > Yes and no. The ds displacement field for 64 bit loads is similar to > the LI field of branches. But the shift fields are not like the spr > field -- the value is split between multiple fields with different bit > ranges, not just permuted within the field.
Well sure, but at the end of the day the instruction is assembled by doing roughly this: insn = 0 for field in fields: insn |= field.encode() -- nothing prevents a field returning a value that is split between multiple bit ranges. There is a bit of scaffolding that assumes contiguous bit ranges but nothing fundamental (and as I said, I think this is mostly for checking that fields don't overlap, and there would be other ways of doing that). Cheers, mwh _______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev