Class: Ragweed::Wraposx::ThreadContext::Float64

Inherits:
FFI::Struct
  • Object
show all
Includes:
FFIStructInclude
Defined in:
lib/ragweed/wraposx/thread_context.rb

Overview

_STRUCT_X86_FLOAT_STATE64

int                     fpu_reserved[2];
_STRUCT_FP_CONTROL      fpu_fcw;                /* x87 FPU control word */
_STRUCT_FP_STATUS       fpu_fsw;                /* x87 FPU status word */
__uint8_t               fpu_ftw;                /* x87 FPU tag word */
__uint8_t               fpu_rsrv1;              /* reserved */ 
__uint16_t              fpu_fop;                /* x87 FPU Opcode */
/* x87 FPU Instruction Pointer */
__uint32_t              fpu_ip;                 /* offset */
__uint16_t              fpu_cs;                 /* Selector */
__uint16_t              fpu_rsrv2;              /* reserved */
/* x87 FPU Instruction Operand(Data) Pointer */
__uint32_t              fpu_dp;                 /* offset */
__uint16_t              fpu_ds;                 /* Selector */
__uint16_t              fpu_rsrv3;              /* reserved */
__uint32_t              fpu_mxcsr;              /* MXCSR Register state */
__uint32_t              fpu_mxcsrmask;          /* MXCSR mask */
_STRUCT_MMST_REG        fpu_stmm0;              /* ST0/MM0   */
_STRUCT_MMST_REG        fpu_stmm1;              /* ST1/MM1  */
_STRUCT_MMST_REG        fpu_stmm2;              /* ST2/MM2  */
_STRUCT_MMST_REG        fpu_stmm3;              /* ST3/MM3  */
_STRUCT_MMST_REG        fpu_stmm4;              /* ST4/MM4  */
_STRUCT_MMST_REG        fpu_stmm5;              /* ST5/MM5  */
_STRUCT_MMST_REG        fpu_stmm6;              /* ST6/MM6  */
_STRUCT_MMST_REG        fpu_stmm7;              /* ST7/MM7  */
_STRUCT_XMM_REG         fpu_xmm0;               /* XMM 0  */
_STRUCT_XMM_REG         fpu_xmm1;               /* XMM 1  */
_STRUCT_XMM_REG         fpu_xmm2;               /* XMM 2  */
_STRUCT_XMM_REG         fpu_xmm3;               /* XMM 3  */
_STRUCT_XMM_REG         fpu_xmm4;               /* XMM 4  */
_STRUCT_XMM_REG         fpu_xmm5;               /* XMM 5  */
_STRUCT_XMM_REG         fpu_xmm6;               /* XMM 6  */
_STRUCT_XMM_REG         fpu_xmm7;               /* XMM 7  */
_STRUCT_XMM_REG         fpu_xmm8;               /* XMM 8  */
_STRUCT_XMM_REG         fpu_xmm9;               /* XMM 9  */
_STRUCT_XMM_REG         fpu_xmm10;              /* XMM 10  */
_STRUCT_XMM_REG         fpu_xmm11;              /* XMM 11 */
_STRUCT_XMM_REG         fpu_xmm12;              /* XMM 12  */
_STRUCT_XMM_REG         fpu_xmm13;              /* XMM 13  */
_STRUCT_XMM_REG         fpu_xmm14;              /* XMM 14  */
_STRUCT_XMM_REG         fpu_xmm15;              /* XMM 15  */
char                    fpu_rsrv4[6*16];        /* reserved */
int                     fpu_reserved1;

;

Constant Summary collapse

FLAVOR =
5

Instance Method Summary collapse

Methods included from FFIStructInclude

#method_missing, #methods, #respond_to?

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Ragweed::FFIStructInclude

Instance Method Details

#dump(&block) ⇒ Object



863
864
865
866
867
868
869
870
871
872
873
874
# File 'lib/ragweed/wraposx/thread_context.rb', line 863

def dump(&block)
  maybe_hex = lambda {|a| begin; "\n" + (" " * 9) + block.call(a, 16).hexdump(true)[10..-2]; rescue; ""; end }
  maybe_dis = lambda {|a| begin; "\n" + block.call(a, 16).distorm.map {|i| "         " + i.mnem}.join("\n"); rescue; ""; end }

  string =<<EOM
  -----------------------------------------------------------------------
  CONTEXT:
  trapno:     #{self.trapno.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.trapno)}
  err:        #{self.err.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.err)}
  faultvaddr: #{self.faultvaddr.to_s(16).rjust(16, "0")} #{maybe_hex.call(self.faultvaddr)}
EOM
end