home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / dosdisas.zip / readdcc.txt < prev    next >
Text File  |  2002-05-11  |  4KB  |  85 lines

  1.                dcc Distribution
  2.  
  3. The code provided in this distribution is (C) by their authors:
  4.     Cristina Cifuentes (most of dcc code)
  5.     Mike van Emmerik (signatures and prototype code, OO version)
  6.     Jeff Ledermann (some disassembly code)
  7. and is provided "as is".
  8.  
  9. The following files are included in the dccoo.tar.gz distribution:
  10. - dcc.zip (dcc.exe DOS program, 1995)
  11. - dccsrc.zip (source code *.c, *.h for dcc, 1993-1994)
  12. - dcc32.zip (dcc_oo.exe 32 bit console (Win95/Win-NT) program, 1997)
  13. - dccsrcoo.zip (source code *.cpp, *.h for "oo" dcc, 1993-1997)
  14. - dccbsig.zip (library signatures for Borland C compilers, 1994)
  15. - dccmsig.zip (library signatures for Microsoft C compilers, 1994)
  16. - dcctpsig.zip (library signatures for Turbo Pascal compilers, 1994)
  17. - dcclibs.dat (prototype file for C headers, 1994)
  18. - test.zip (sample test files: *.c *.exe *.b, 1993-1996)
  19. - makedsig.zip (creates a .sig file from a .lib C file, 1994)
  20. - makedstp.zip (creates a .sig file from a Pascal library file, 1994)
  21. - readsig.zip (reads signatures in a .sig file, 1994)
  22. - dispsrch.zip (displays the name of a function given a signature, 1994)
  23. - parsehdr.zip (generates a prototype file (dcclibs.dat) from C *.h files, 1994)
  24.  
  25. The following files are included in the test.zip file:  fibo,
  26. benchsho, benchlng, benchfn, benchmul, byteops, intops, longops,
  27. max, testlong, matrixmu, strlen, dhamp.
  28. The version of dcc included in this distribution (dccsrcoo.zip and
  29. dcc32.exe) is a bit better than the first release, but it is still
  30. broken in some cases, and we do not have the time to work in this
  31. project at present so we cannot provide any changes.
  32. Comments on individual files:
  33. - fibo (fibonacci): the small model (fibos.exe) decompiles correctly,
  34.   the large model (fibol.exe) expects an extra argument for scanf().
  35.   This argument is the segment and is not displayed.
  36. - benchsho: the first scanf() takes loc0 as an argument.  This is
  37.   part of a long variable, but dcc does not have any clue at that
  38.   stage that the stack offset pushed on the stack is to be used
  39.   as a long variable rather than an integer variable.
  40. - benchlng: as part of the main() code, LO(loc1) | HI(loc1) should
  41.   be displayed instead of loc3 | loc9.  These two integer variables
  42.   are equivalent to the one long loc1 variable.
  43. - benchfn: see benchsho.
  44. - benchmul: see benchsho.
  45. - byteops: decompiles correctly.
  46. - intops: the du analysis for DIV and MOD is broken.  dcc currently
  47.   generates code for a long and an integer temporary register that
  48.   were used as part of the analysis.
  49. - longops: decompiles correctly.
  50. - max: decompiles correctly.
  51. - testlong: this example decompiles correctly given the algorithms
  52.   implemented in dcc.  However, it shows that when long variables
  53.   are defined and used as integers (or long) without giving dcc
  54.   any hint that this is happening, the variable will be treated as
  55.   two integer variables.  This is due to the fact that the assembly
  56.   code is in terms of integer registers, and long registers are not
  57.   available in 80286, so a long variable is equivalent to two integer
  58.   registers.  dcc only knows of this through idioms such as add two
  59.   long variables.
  60. - matrixmu: decompiles correctly.  Shows that arrays are not supported
  61.   in dcc.
  62. - strlen: decompiles correctly.  Shows that pointers are partially
  63.   supported by dcc.
  64. - dhamp: this program has far more data types than what dcc recognizes
  65.   at present.
  66.  
  67. Our thanks to Gary Shaffstall for some debugging work.  Current bugs
  68. are:
  69. - if the code generated in the one line is too long, the (static)
  70.   buffer used for that line is clobbered.  Solution: make the buffer
  71.   larger (currently 200 chars).
  72. - the large memory model problem & scanf()
  73. - dcc's error message shows a p option available which doesn't
  74.   exist, and doesn't show an i option which exists.
  75.  
  76. For more information refer to the thesis "Reverse Compilation
  77. Techniques" by Cristina Cifuentes, Queensland University of
  78. Technology, 1994, and the dcc home page:
  79.     http://www.it.uq.edu.au/groups/csm/dcc.html
  80.  
  81. Please note that the executable version of dcc provided in this
  82. distribution does not necessarily match the source code provided,
  83. some changes were done without us keeping track of every change.
  84.  
  85.