Class: Ragweed::Wraposx::ThreadContext::Float32

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

Overview

_STRUCT_X86_FLOAT_STATE32 { int fpu_reserved; _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 / __uint32_t fpu_ip; / x87 FPU Instruction Pointer offset / __uint16_t fpu_cs; / x87 FPU Instruction Pointer Selector / __uint16_t fpu_rsrv2; / reserved / __uint32_t fpu_dp; / x87 FPU Instruction Operand(Data) Pointer offset / __uint16_t fpu_ds; / x87 FPU Instruction Operand(Data) Pointer 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 / char fpu_rsrv4; / reserved */ int fpu_reserved1; };

Constant Summary collapse

FLAVOR =
2

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



759
760
761
762
763
764
765
766
767
768
769
770
# File 'lib/ragweed/wraposx/thread_context.rb', line 759

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