//--------------------------------------------------------------------------
int idaapi x86_read_registers(
      thid_t thread_id,
      int clsmask,
      regval_t *values)
{
  int code = s_read_registers(thread_id, clsmask, values);
  if ( code > 0 )
  {
    // FPU related registers
    if ( ph.realcvt != NULL && (clsmask & X86_RC_FPU) != 0 )
    {
      for ( int i=R_ST0; i < R_ST0+FPU_REGS_COUNT; i++ )
      {
        if ( ph.realcvt(values[i].fval, values[i].fval, 004) != 0 ) // load long double
          memset(values[i].fval, 0, sizeof(values[i].fval));
      }
    }
  }
  return code;
}
예제 #2
0
//--------------------------------------------------------------------------
int idaapi arm_read_registers(thid_t thread_id, int clsmask, regval_t *values)
{
  return s_read_registers(thread_id, clsmask, values);
}