SCOUG-Programming Mailing List Archives
Return to [ 22 | 
April | 
2004 ]
 >> Next Message >>
 
 
 
Content Type:   text/plain 
At the last meeting someone raised the question of converting   
existing programs to PL/E, later named to SL/I.  I responded   
that it would not involve a source to source conversion, but   
instead one of an executable to source.  In that manner you   
needed only one conversion program regardless of the source   
language(s) used.  In effect to "reverse engineer" or   
"disassemble" the executable whether .exe, .sys, or .whatever   
to PL/E source.  
 
I use the term "disassemble" because we do have existing   
software which converts executables into assembly language.    
From my perspective that suffices to use the same process to   
convert an executable to PL/E source.  It suffices because   
Intel conveniently list three forms of each Pentium instruction   
in its reference manual: (1) actual, (2) symbolic assembly, and   
(3) HLL.  Thus we have a one-to-one (1:1) mapping between   
an assembly language instruction and an HLL form (take my   
word expressible in PL/E).  
 
Bearing in mind that every programming language is also a   
specification language, unavoidably so, that means you can   
have a mix of machine-independent and -dependent   
specifications in the same source.  It also means for code   
generation to occur at all ultimately every   
machine-independent specification, i.e. source statement, must   
decompose into a set of one or more machine-dependent   
ones.  
 
Thus included in the specifications of the language itself we   
have a set which "specifies" this mapping, this decomposition.    
In fact we must have a set for every machine instruction set   
on which we wish to execute, in that manner provide   
cross-system support.  
 
That means the language implementation, that which   
processes the source language, needs to distinguish between   
machine-independent and -dependent specifications.  That   
distinction would occur on the data types involved in a source   
expression.  For example defining a register as:  
dcl 1 eax register,  
       2 ex bit(16),  
       2 ax,  
          3 (ah, al) bit(8);  
 
The use then of eax, ex, ax, ah, or al would indicate the   
presence of an machine-dependent specification.  This means   
in essence defining the architecture, at least that referable   
within the instruction set, as a set of specifications.  
 
Given we can do that on the basis that Intel has already done   
it as well as IBM in at least two instances using APL, the   
question of disassembling an executable into a set of   
machine-dependent specifications becomes moot.  The next   
challenge occurs in taking the disassembled   
machine-dependent specifications and assembling them into a   
machine-independent form.  
 
I would like to address that at some point in the future.    
Having had some experience in disassembling PL/I and COBOL   
executables into their PL/I and COBOL source for clients who   
had "lost" their source, I would like to demonstrate the   
process.  In that manner also illustrate its automation.  
 
Of course, that assumes sufficient interest in this exists.  That   
sufficient interest should include also the use of pattern   
recognition and how that occurs.  
 
 
=====================================================  
 
To unsubscribe from this list, send an email message  
to "steward@scoug.com". In the body of the message,  
put the command "unsubscribe scoug-programming".  
 
For problems, contact the list owner at  
"rollin@scoug.com".  
 
=====================================================  
 
  
 >> Next Message >>
Return to [ 22 | 
April | 
2004 ] 
  
  
The Southern California OS/2 User Group
 P.O. Box 26904
 Santa Ana, CA  92799-6904, USA
Copyright 2001 the Southern California OS/2 User Group.  ALL RIGHTS 
RESERVED. 
 
SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group.
OS/2, Workplace Shell, and IBM are registered trademarks of International 
Business Machines Corporation.
All other trademarks remain the property of their respective owners.
 
 |