home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sherlock.zip / REGISTER.C < prev    next >
C/C++ Source or Header  |  1994-06-29  |  3KB  |  79 lines

  1. /*
  2. **  Sherlock - Copyright 1992, 1993, 1994
  3. **    Harfmann Software
  4. **    Compuserve: 73147,213
  5. **    All rights reserved
  6. */
  7. /*
  8. ** Access the registers in the debuggee.
  9. */
  10. #include    <stdio.h>
  11.  
  12. #define     INCL_DOSPROCESS
  13. #include    <os2.h>
  14. #include    "debug.h"
  15.  
  16. #include    "Debugger.h"
  17. #include    "Register.h"
  18.  
  19. /*
  20. ** Dump/set the registers
  21. */
  22. int CommandRegister(char **ptrs)
  23. {
  24.     if(ptrs[2] == NULL) {
  25.     DispatchCommand(DBG_C_ReadReg);
  26.     DumpRegs(&debugBuffer);
  27.     return -1;
  28.     }
  29.     return -1;
  30. }
  31.  
  32. /*
  33. ** Dump the debug structure to the console.
  34. */
  35. void DumpRegs(DebugBuffer *buffer)
  36. {
  37.     fprintf(logFile, "Pid: %08x  Tid:    %08x\n", buffer->Pid, buffer->Tid);
  38.     fprintf(logFile, "Cmd: %8d  Value:  %08x\n", buffer->Cmd, buffer->Value);
  39.     fprintf(logFile, "Addr: %08x  Buffer: %08x\n", buffer->Addr, buffer->Buffer);
  40.     fprintf(logFile, "Len:  %08x  Index:  %08x\n", buffer->Len, buffer->Index);
  41.     fprintf(logFile, "MTE:  %08x\n", buffer->MTE);
  42.  
  43.     fprintf(logFile, "EAX: %08x  EBX: %08x  ECX: %08x  EDX: %08x\n",
  44.         buffer->EAX, buffer->EBX, buffer->ECX, buffer->EDX);
  45.     fprintf(logFile, "ESP: %08x  EBP: %08x  ESI: %08x  EDI: %08x\n",
  46.         buffer->ESP, buffer->EBP, buffer->ESI, buffer->EDI);
  47.     fprintf(logFile, "EIP: %08x  EFLAGS: %08x\n",
  48.         buffer->EIP & 0xffff, buffer->EFlags);
  49.     fprintf(logFile, "  Carry Parity Aux Zero Sign Trap IntE Dir OFlow IOPL Nested Resume\n");
  50.     fprintf(logFile, "  %s    %s     %s  %s   %s   %s   %s   %s  %s    %d   %s     %s \n",
  51.         buffer->EFlags & 0x00001 ? "CY" : "NC",
  52.         buffer->EFlags & 0x00004 ? "PE" : "PO",
  53.         buffer->EFlags & 0x00010 ? " 1" : " 0",
  54.         buffer->EFlags & 0x00040 ? " Z" : "NE",
  55.         buffer->EFlags & 0x00080 ? " 1" : " 0",
  56.         buffer->EFlags & 0x00100 ? " 1" : " 0",
  57.         buffer->EFlags & 0x00200 ? " 1" : " 0",
  58.         buffer->EFlags & 0x00400 ? "UP" : "DN",
  59.         buffer->EFlags & 0x00800 ? " O" : "NO",
  60.         buffer->EFlags & 0x03000 >> 12,
  61.         buffer->EFlags & 0x04000 ? " 1" : " 0",
  62.         buffer->EFlags & 0x10000 ? " 1" : " 0",
  63.         buffer->EFlags & 0x20000 ? " 1" : " 0");
  64.     fprintf(logFile, "CSLim %08x  CSBase: %08x  CSAcc: %02x  CSAttr: %02x  CS:%04x\n",
  65.         buffer->CSLim, buffer->CSBase, buffer->CSAcc, buffer->CSAtr, buffer->CS);
  66.     fprintf(logFile, "DSLim %08x  DSBase: %08x  DSAcc: %02x  DSAttr: %02x  DS:%04x\n",
  67.         buffer->DSLim, buffer->DSBase, buffer->DSAcc, buffer->DSAtr, buffer->DS);
  68.     fprintf(logFile, "ESLim %08x  ESBase: %08x  ESAcc: %02x  ESAttr: %02x  ES:%04x\n",
  69.         buffer->ESLim, buffer->ESBase, buffer->ESAcc, buffer->ESAtr, buffer->ES);
  70.     fprintf(logFile, "FSLim %08x  FSBase: %08x  FSAcc: %02x  FSAttr: %02x  FS:%04x\n",
  71.         buffer->FSLim, buffer->FSBase, buffer->FSAcc, buffer->FSAtr, buffer->FS);
  72.     fprintf(logFile, "GSLim %08x  GSBase: %08x  GSAcc: %02x  GSAttr: %02x  GS:%04x\n",
  73.         buffer->GSLim, buffer->GSBase, buffer->GSAcc, buffer->GSAtr, buffer->GS);
  74.     fprintf(logFile, "SSLim %08x  SSBase: %08x  SSAcc: %02x  SSAttr: %02x  SS:%04x\n\n",
  75.         buffer->SSLim, buffer->SSBase, buffer->SSAcc, buffer->SSAtr, buffer->SS);
  76.  
  77.     return;
  78. }
  79.