All registers are placed into one large buffer that contains everything. All 
offsets should be the global offset in the register context's data. Typically 
we should see:


GPR
   rax offset 0
   rbx offset 8
   ....
FPR
   mm0 offset 128
   mm1 offset 160
   ...
EXC
   fpsr offset 256
   ...


So the offsets should be based on the offset from the start of the one large 
buffer that contains all register values.

> On Aug 13, 2015, at 2:26 AM, Abhishek Aggarwal via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> 
> 
> Hello 
> 
> I have a question regarding offset calculations of registers for x86_64 
> architecture. In file source/Plugins/Process/Utility/RegisterInfos_x86_64.h:
> 
> The macro FPR_OFFSET(reg) calculates the offset of floating point register 
> 'reg' with respect to 'UserArea' struct while GPR_OFFSET(reg) calculates it 
> wrt to 'GPR' struct. Is there any specific reason of calculating the offsets 
> of floating point registers wrt 'UserArea' struct and not wrt 'FPR' struct 
> (defined in source/Plugins/Process/Utility/RegisterContext_x86.h) ?
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to