README's
commit
64fe6180a8
|
@ -0,0 +1,25 @@
|
|||
Short: The Amiga E v3.3a distribution
|
||||
Type: dev/e
|
||||
Author: wvo96r@ecs.soton.ac.uk
|
||||
|
||||
E is an object oriented / procedural / unpure functional higher programming
|
||||
language, mainly influenced by languages such as C++, Ada, Lisp etc. It is a
|
||||
general-purpose programming language, and the Amiga implementation is
|
||||
specifically targeted at programming system applications. The number of
|
||||
features of the language is really too great to sum up entirely, and include:
|
||||
speed of >20000 lines/minute on a 7 Mhz amiga, inline assembler and linker
|
||||
integrated into compiler, large set of integrated functions, great module
|
||||
concept with v40 includes as modules, flexible type-system, quoted
|
||||
expressions, immediate and typed lists, parametric and inclusion polymorphism,
|
||||
exception handling, inheritance, data-hiding, methods, multiple return values,
|
||||
default arguments, register allocation, fast memory management, unification,
|
||||
LISP-Cells, gui-toolkit, (macro-) preprocessor, very intuitive and powerful
|
||||
source-level debugger, easy .library linking, and much more...
|
||||
|
||||
update to v3.2a.
|
||||
|
||||
This _distribution_ is Freeware. It contains only a limited compiler,
|
||||
a registered compiler is available separately.
|
||||
|
||||
Wouter van Oortmerssen, october 27th, 1997
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
Short: The Amiga E v3.3a compiler (ec)
|
||||
Type: dev/e
|
||||
Author: wvo96r@ecs.soton.ac.uk
|
||||
|
||||
This is the EC compiler, formerly shareware, now freeware. I've decided to
|
||||
give away the E compiler for free. To read about the reasons why and other
|
||||
details: http://www.ecs.soton.ac.uk/~wvo96r/e/efuture.txt
|
||||
|
||||
This archive contains only the compiler executable, and to do anything with
|
||||
it, you need the distribution archive, dev/e/amigae33a.lha from any aminet
|
||||
mirror. The source to the compiler is available as dev/e/ec33a_src.lha
|
||||
|
||||
EC is now freeware. You may distribute it in any way, i.e. via the internet
|
||||
or on CDROMs. The only (obvious) exceptions are that you aren't allowed to
|
||||
make money out of selling EC, and you're not allowed to change anything about
|
||||
this archive. Thanks.
|
||||
|
||||
Wouter van Oortmerssen, march 1999
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
Short: The Amiga E v3.3a compiler source
|
||||
Type: dev/e
|
||||
Author: wvo96r@ecs.soton.ac.uk
|
||||
|
||||
This archive contains the source code (in assembly) to the E compiler EC.
|
||||
|
||||
WARNING: This archive is for highly skilled assembly programmers with an
|
||||
intimate knowledge of E and compilers, who are curious about EC's internals.
|
||||
If this doesn't apply to you there's no point in even downloading this
|
||||
archive. EC's source code redefines the term "hairy" and will make even
|
||||
the best hackers faint.
|
||||
|
||||
This source code release is an addon to the freeware release of the E
|
||||
compiler, EC v3.3a, which you can get from where you got this or any aminet
|
||||
mirror as dev/e/ec33a.lha. You also need the distribution which was already
|
||||
available: dev/e/amigae33a.lha. To read all about why I released this all
|
||||
for free, read http://www.ecs.soton.ac.uk/~wvo96r/e/efuture.txt
|
||||
|
||||
As far as distributing the _unmodified_ archive goes, it is freeware, you can
|
||||
distribute it in any way you see fit, i.e. via the internet or on CDROMs. The
|
||||
only (obvious) exceptions are that you aren't allowed to make money out of
|
||||
selling EC, and you're not allowed to change anything about this archive. Thanks.
|
||||
|
||||
|
||||
I discourage people to distribute modified versions of EC, but if you feel you
|
||||
really have to, a different set of rules applies:
|
||||
|
||||
As long as the modified compiler & source don't leave your system, you
|
||||
can obviously do anything you please with it.
|
||||
|
||||
If you wish to re-distribute a modified version of EC you made, you have to
|
||||
comply with the following rules:
|
||||
|
||||
* besided the new executable, you also distribute the new modified source
|
||||
that generated it. EC's source code adheres to a similar scheme as "Open
|
||||
Source" or the "GNU public license" with the only difference that you
|
||||
don't need to include their licenses.
|
||||
|
||||
* You make very clear in your executable name, archive name, program welcome
|
||||
message and anywhere else that this is YOUR version of EC, not the original,
|
||||
i.e. someone who downloads your EC shouldn't be confused as to who made this.
|
||||
Make sure you give the whole project a different name (e.g. BobsEC), and a
|
||||
version number higher than 3.3a.
|
||||
|
||||
* You clearly mention me as the original author, refer to the 3 original
|
||||
archives mentioned in this text, and in general do your best to educate the
|
||||
users of your version to understand how this software came to be.
|
||||
Obviously if they want to modify/redistribute your version, they should
|
||||
also have read the texts in the original archives.
|
||||
|
||||
* EC is unsupported, so don't come back to me to ask wether you can have
|
||||
your changes incorporated in the next official release, because there
|
||||
won't be any. Instead, look around on the internet (the E mailing list
|
||||
is a good place) for other people interested in doing an extended EC, and
|
||||
cooperate with them.
|
||||
|
||||
|
||||
Now to the hard bit, modifying EC's source code. As mentioned above, think
|
||||
long and hard wether this is a really a sensible thing to do, and when you
|
||||
have decided yes, think long and hard again. In the later years of
|
||||
development, modifying EC required a very concentrated effort to modify and
|
||||
debug, especially doing it correctly to not introduce new problems. EC's
|
||||
source code is terribly complicated, very badly programmed, and contains more
|
||||
long distance dependancies than any bit of code I've ever seen. In short,
|
||||
unless the modification you intend to make is absolutely trivial, writing
|
||||
the compiler from scratch would be a lot quicker.
|
||||
|
||||
Given that you still want to modify it:
|
||||
|
||||
* the code was written using AsmOne, most recently with version v1.25. Don't
|
||||
ask me to send it to you, because I don't think it's public domain.
|
||||
|
||||
* If you insist on converting it to another assembler, be prepared for a lot
|
||||
of work. Realise that a lot of the code in the source plays a role in the
|
||||
code generation process, and as such is more critical to change than any
|
||||
other assembly program would be: for example occurrences of MOVE.L #1,D0
|
||||
in the source might be there for me to grab its opcode, if your assembler
|
||||
changes that to MOVEQ #1,D0, the code generator will generate illegal code
|
||||
and all compiled E programs will crash, and it'll be very hard to find out
|
||||
why it went wrong. So make sure you disable any flags/options of your
|
||||
assembler that try to optimise or otherwise change the code.
|
||||
|
||||
* register usage is completely non transparant, i.e. if a certain register
|
||||
isn't used for an entire subroutine, you can't assume it's free to use.
|
||||
there are all sorts of weird conventions, and many registers span entire
|
||||
sections of the compiler in their lifetime. Basically if you modification
|
||||
is in need of registers (and it will be) your safest bet is to JSR
|
||||
from the point where you want to insert the new code, safe all registers
|
||||
that you will be using and in general make sure that you restore the
|
||||
machine state to exactly how you found it. Failing to do this WILL
|
||||
introduce new hairy bugs.
|
||||
|
||||
* the whole compiler (>80k) is written in small model, i.e. uses 16bit
|
||||
signed branch offsets, so insert new code at the end or start, otherwise
|
||||
you'll break a lot of branches.
|
||||
|
||||
* the source code contains hardly any comments :P
|
||||
|
||||
There are tons more pitfals, but these are the most obvious I could think of.
|
||||
|
||||
|
||||
besides the actual source code, the following files have been supplied in
|
||||
the extras/ dir with the sole purpose of helping people who intend to
|
||||
modify/enhance EC. The files are supplied AS IS, please don't come and ask
|
||||
me to explain to you what their contents means.
|
||||
|
||||
extras/TODO.TXT:
|
||||
the most recent todo list I had for future releases. May give you an idea
|
||||
as to what bugs havent been fixed should you get to the point of improving
|
||||
EC a lot.
|
||||
|
||||
extras/EC.TXT
|
||||
this is the text I used internally to keep track of data structures and
|
||||
other data used in EC, as the source itself is rather unselfdocumenting.
|
||||
This text could help you a bit in trying to understand EC's code, but
|
||||
most of the data structures in this text contain no documentation, so
|
||||
you're on your own as to what it all means. Still its better than nothing.
|
||||
|
||||
extras/utils/
|
||||
E source code to utilities supplied in the distribution, i.e. showmodule
|
||||
and others. One utility called ecdebug can dump some of the internal
|
||||
data structures of EC while its running (run it as EC HOLD in another shell),
|
||||
and can be easily extended.
|
||||
|
||||
|
||||
Wouter van Oortmerssen, march 1999
|
||||
|
Loading…
Reference in New Issue