+--------------------------------------------------------------------+
| |
| Documentation for |
| |
| TPU2ASM.EXE |
| |
| A symbolic disassembler for |
| Turbo Pascal version 5.0 units |
| |
| Copyright (C) 1989 by Per Bent Larsen |
| All rights reserved |
| |
| Version 1.0, March 1989 |
| |
+--------------------------------------------------------------------+
What it is
----------------------------------------------------------------------
TPU2ASM is a symbolic disassembler capable of extracting compiled code
from a version 5.0 Turbo Pascal TPU file. The output is a TASM
compatible assembly file.
What it can be used for
----------------------------------------------------------------------
The utility can be used as an aid in developing EXTERNAL procedures
and functions for Turbo Pascal, allowing the programmer to write a
template function or procedure with parameter and local variable
allocation set up automatically by the compiler.
You can also choose to write the entire routine in pascal and then do
manual optimization on the code produced by the compiler. The code
generated by Turbo Pascal leaves much room for improvement as you will
soon find out.
Another use for the utility is studying the code generated by the
compiler to determine which pascal constructs are preferable to others
in terms of execution speed and code size. You'll be surprised.
Finally this utility makes it theoretically possible to convert an
entire program to assembler thus allowing you to link it with other
languages like C or PROLOG. To do this you must have the Turbo Pascal
Runtime Library Source available from Borland Int'l. It requires a
conversion of the RTL into pure assembler. Be warned - this may not be
a trivial process.
What it isn't
---------------------------------------------------------------------
This utility was not meant to be a reverse engineering tool, though it
can be used as such to a limited extend. All references are shown
symbolically and when a symbol is not known due to lack of information
in the symbol tables, the program does not attempt to make a symbol of
it's own. When TPU2ASM can not find the symbol for a reference, it is
always because one ore more units were compiled with $D- or $L-.
References that can not be resolved symbolically are left as ???? in
the output file. Exceptions to this are items which are always unnamed
like the CS constant block. These items are named by TPU2ASM.
Acknowledgements
----------------------------------------------------------------------
TPU2ASM was originally based on the source code for the TINFO utility,
which is part of the famous Analyst package created and marketed by
TurboPower Software.
Without the knowledge and cooperation of the TurboPower people and
Brian Foley in particular, this would not have been possible.
Comments and suggestions
----------------------------------------------------------------------
Feel free to contact me if you have comments or suggestions to this
product or perhaps any future product, you would like to see. I can be
reached on the address mentioned above or on CompuServe 75470,1320.
Just drop a note in the Borland programming forum A (Go BPROGA),
or send an E-Mail. In Europe I can also be reached via Borland
Scandinavia's BBS as Per Larsen (+45 02 14 04 94, 1200/2400,N,8,1).
----------------------------------------------------------------------
Happy computing
Per B Larsen
3/10/89
|