This is the mail archive of the frysk@sourceware.org mailing list for the frysk project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: frysk-core/frysk proc/BankRegister.java proc/C ...


Phil Muldoon wrote:
Andrew Cagney wrote:
Phil Muldoon wrote:
Andrew,

I know this work is ongoing, so should I sit tight regarding the FIXME notifications? I'm not sure how to fix the gpr registers access. If it is work ongoing, I'll just wait until you give the signal with an explanation regarding how a Task accesses it's own registers.

The function to look at is Task.accessRegister(Register register,int offset, int length, byte[] buffer, int start, boolean write) which will does a direct/raw byte copy of the data into a buffer.

However, yes, perhaps hold off a little until I've got all the register code in frysk.proc resolved.
Andrew



Ok will do, will wait and see. As a rhetorical question, what is wrong with task.getSomeRegisterFunctionName("eax") as a general helper function?

The only place where a String->Register lookup (e.g., "eax" -> frysk.isa.IA32Registers.EAX) is needed is in the expression evaluator where it interprets << $eax >>. Every where else constant object, such as frysk.isa.IA32Registers.EAX can be used: these objects are efficient (better with HashMap) and second having defined constants prevents typos such as a register being called "foo" in one place and "fos" in a second.


Why do I need to know (ptrace buffer?) offset and length to access a register? Is this because register access is being move to the task from the ISA? Just trying to get a sense of where this refactor is going.


I'm not sure what you mean, the offset/length are for within the specified register, and start is an offset into the byte buffer. Two things change: tThe code that implements register accesses isn't being moved to the task; but the way to access registers is now simpler, contrast:
Task.getRegister(IA32Register.XIP)
with:
Task.getIsa().getBankRegister("xip").getRegister(task)
the internals, though cleaned up will still be very similar.


Andrew


Regards

Phil



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]