home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / hackers / tools / nsk.arj / FTRACE / FTRACE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-27  |  1.6 KB  |  55 lines

  1. /****************************************
  2. *                    *
  3. *    Servis for trace.        *
  4. *    Sourse code in ftrace.asm    *
  5. *    Make by M.Potanin.        *
  6. *****************************************/
  7. #include<dos.h>
  8.  
  9. extern struct cpu_stat{        /* stract of processor's stat*/ 
  10.               unsigned ax;
  11.               unsigned bx;
  12.               unsigned cx;
  13.               unsigned dx;
  14.               unsigned si;
  15.               unsigned di;
  16.               unsigned bp;
  17.           union{
  18.         struct{
  19.                    unsigned sp;
  20.                    unsigned ss;}Words;
  21.         void far * stack; /*Far stack pointer */
  22.           }stack;        
  23.               unsigned ds;
  24.               unsigned es;}save_stat;
  25.  
  26. struct blkret{    /*Bloc of return in stack*/
  27.        union {
  28.              struct{
  29.                     unsigned ip;
  30.                     unsigned cs;
  31.              }Words;
  32.              void far * point;
  33.              }CS_IP;
  34.        unsigned flags;
  35.        };
  36.  
  37. #define topstack ((struct blkret far *)save_stat.stack.stack)
  38.     /* Top of stack as return's bloc*/
  39. #define top ((unsigned int far *)save_stat.stack.stack)
  40.     /*Stack as word array*/
  41. #define topb ((unsigned char *)save_stat.stack.stack)
  42.         /*Stack as byte array*/
  43. #define adress ((void far *)(topstack->CS_IP.point))
  44.     /*The adres of last command*/
  45. #define last_command ((unsigned char far *)(topstack->CS_IP.point))
  46.     /*Last command in execution stream*/
  47.  
  48. void near step(void);          /*Make one step */
  49. void interrupt ftrace(void);    /*Procedure of int1 */
  50.  
  51. typedef void(far * funct)();
  52. typedef void interrupt (far * interr)();
  53.  
  54. /*-------------------------ftrace.h------------------------------*/
  55.