home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / DISASM.ZIP / TEST.C < prev   
C/C++ Source or Header  |  1992-01-04  |  5KB  |  155 lines

  1. /*==========================================================================*/
  2. /* TEST.C - 386 Code Disassembly Engine Test Program                        */
  3. /*==========================================================================*/
  4. /*                                                                          */
  5. /* Created by: J.P. Cossette                                                */
  6. /*                                                                          */
  7. /*    History:                                                              */
  8. /*                                                                          */
  9. /* 11-25-1990 - Created this file                                           */
  10. /*                                                                          */
  11. /*           (C)Copyright 1990 J.P. Cossette, All rights reserved.          */
  12. /*==========================================================================*/
  13. #define   INCL_DOS
  14. #include  <os2.h>
  15. #include  <stdlib.h>
  16. #include  <stdio.h>
  17. #include  <memory.h>
  18. #include  <string.h>
  19. #include  <disasm.h>
  20.  
  21. /*--------------------------------------------------------------------------*/
  22. /* Local Definitions                                                        */
  23. /*--------------------------------------------------------------------------*/
  24. #define  DISASM_CODESIZ     0x02500
  25.  
  26. /*--------------------------------------------------------------------------*/
  27. /* Function prototypes                                                      */
  28. /*--------------------------------------------------------------------------*/
  29. VOID     cdecl     main(VOID);
  30. VOID     cdecl     TestProc(USHORT);
  31. VOID     APIENTRY  PlmProc(USHORT);
  32. VOID     cdecl     dummy(VOID);
  33.  
  34. /*--------------------------------------------------------------------------*/
  35. /*  Local Data                                                              */
  36. /*--------------------------------------------------------------------------*/
  37. DISASM   d;
  38. VOID     *start_addr;
  39. VOID     *stop_addr;
  40.  
  41. UCHAR    b_dumbuf[512];
  42. USHORT   w_dumbuf[512];
  43. ULONG    d_dumbuf[512];
  44.  
  45. /*==========================================================================*/
  46. /* main()                                                                   */
  47. /*==========================================================================*/
  48. VOID     cdecl     main()
  49. {
  50.     SHORT          rc;
  51.     USHORT         i;
  52.     UCHAR          buf[64];
  53.     UCHAR          *p;
  54.  
  55.     TestProc(0);
  56.  
  57.     d.csip = start_addr;
  58.     for (; d.csip < stop_addr;)
  59.     {
  60.         p = (UCHAR*)d.csip;
  61.         if ((rc = DisAssemble(&d, 0, 0)) != 0)
  62.         {
  63.             printf("\nError: rc=%d...", rc);
  64.             exit(-1);
  65.         }
  66.         memset(buf, 0, sizeof(buf));
  67.         memset(buf, ' ', (sizeof(buf) - 1));
  68.         for (buf[0] = 0x00, i = 0; i < d.ilen; i++)
  69.         {
  70.             sprintf(&buf[(strlen(buf))], "%02X", p[i]);
  71.         }
  72.         buf[(strlen(buf))] = ' ';
  73.         buf[19] = 0x00;
  74.         printf("\n%04X:%04X %s %s", SELECTOROF(p), OFFSETOF(p), buf, d.buf);
  75.     }
  76. }
  77. /*==========================================================================*/
  78. /*  TestProc() - disassemble this function                                  */
  79. /*==========================================================================*/
  80. VOID     cdecl     TestProc(parm1)
  81. USHORT             parm1;
  82. {
  83.     ULONG          la[2];
  84.     USHORT         i, j;
  85.     UCHAR          c, *p;
  86.  
  87. //    start_addr = TestProc;
  88. //    stop_addr  = dummy;
  89.  
  90.     start_addr = DisAssemble;
  91.     stop_addr  = MAKEP((SELECTOROF(DisAssemble)), ((OFFSETOF(DisAssemble)) + DISASM_CODESIZ));
  92.  
  93.     return;
  94.     i = 1;
  95.     la[i] = 1L;
  96.     i = i * 111;
  97.     i = i >> 10;
  98.     i = i << 10;
  99.     i = i / 3;
  100.     i ^= 5;
  101.     i = ~i;
  102.     i++;
  103.     i--;
  104.     i += 5;
  105.     i += 512;
  106.     i -= 5;
  107.     i -= 512;
  108.     i = i | j;
  109.     i = i | 0x05;
  110.     i = i | 0x0512;
  111.     i = i ^ j;
  112.     i = i ^ 5;
  113.     i = i ^ 512;
  114.     i = i & j;
  115.     i = i & 5;
  116.     i = i & 512;
  117.  
  118.     for (i = 0; i < 1024; i++, j++)
  119.     {
  120.          b_dumbuf[i] = j;
  121.          b_dumbuf[i+j] = i;
  122.          b_dumbuf[i+j] = 5;
  123.          b_dumbuf[i+j] = 512;
  124.  
  125.          w_dumbuf[i] = j;
  126.          w_dumbuf[i+j] = i;
  127.          w_dumbuf[i+j] = 5;
  128.          w_dumbuf[i+j] = 512;
  129.  
  130.          d_dumbuf[i] = j;
  131.          d_dumbuf[i+j] = i;
  132.          d_dumbuf[i+j] = 5;
  133.          d_dumbuf[i+j] = 512;
  134.          d_dumbuf[i+j] = 0x10001000;
  135.  
  136.          p = b_dumbuf;
  137.          p[i] = j;
  138.          p[i+j] = i;
  139.          p[i+j] = 5;
  140.          p[i+j] = 512;
  141.     }
  142.     PlmProc(i);
  143.     PlmProc(512);
  144. }
  145. /*==========================================================================*/
  146. VOID     APIENTRY  PlmProc(parm1)
  147. USHORT             parm1;
  148. {
  149. }
  150. /*==========================================================================*/
  151. VOID     cdecl     dummy()
  152. {
  153. }
  154. /*==========================================================================*/
  155.