@vojo, post #1
New in E-VO (3.4.0)
- Name change to E-VO
- New version numbering 3.4.0
- Add CONT command, similar to EXIT but continues the loop at the top
instead of dropping out.
- Make default cpu 68000
- Make stack buffer configurable (and default it to 50k)
- Fix file handle leak
- Fixed breaking defect MIDSTR command
- Allow CONT and EXIT commands to be called inside an IF or SELECT
- Add ANDALSO and ORELSE short circuit versions of AND and OR
- Optimised IF/WHILE/REPEAT expressions and removed TST immediately
following MOVEQ
- Fixed KickVersion not returning true when version number is exactly
equal to the requested version
- Allow String(0) which was valid in E v3.3a
- Show line numbers for unused variables/labels/procs
- Allow new formatting characters \u (unsigned long) \q (double quote)
\! (ascii bell) \v (vertical tab) \xHH (hex char) (taken from
CreativE)
- Allow macros to be defined by passing in DEFINE command line
parameter (taken from CreativE / ECX)
- Allow string consts (taken from CreativE)
- Added #date preprocessor (taken from CreativE but enhanced with hours
minutes and seconds options)
- Added DoMethod, DoMethodA, CoerceMethod, CoerceMethodA,
DoSuperMethod, DoSuperMethodA, Set, Sets, Get, Gets, CtrlD, CtrlE, CtrlF,
Chk, Eof, Fopen, Fclose, Alloc, Free, PutF, ReadB, WriteB, Size, Lsl, Lsr
functions (all taken from CreativE)
- We now have optimised versions of WriteF, PrintF, PutF when targetting
OS 37.
- Added SHOWFNAME command line parameter.
- Reverted order of efunctab back to how it was in E to restore
compatibility with pre-compiled E modules that are using Mul Div or
WriteF.
- Added the following functions:
LowerChar(c), UpperChar(c) - takes a char and returns a char
StrAddChar(s,c) - Adds a single character to an estring
ListAddItem(l,i) - Adds a single item to an elist
- Immediate assignments for values -256 to 254 for even numbers converted
to MOVEQ followed by ADD.L D0,D0
- Optimised NEW [] list creation to remove duplicate moves into D0
eg. NEW [0,0,0,0]
- Added OPT PURE to check for non pure code (eg variables in static
lists/objects and GetA4 call)
- Optimisation: Removed TST.L D0 after EXT.L D0 in IF/WHILE/REPEAT etc
conditions.
- Optimisation for default values for reg vars into single MOVE
instruction.
- Optimisation for reg var assignments where moveq is used into a single
MOVE instruction where possible.
- Added warning when compiling a library that OPT PURE is recommended
- Optimisation for reg var assignments where moveq+add is used.
- Optimisations with FOR loops to remove redundant move instructions.
- Added FATAL 'string' command which generates no code but will fail
the compilation (useful for use with #ifdef)
- Added WARN 'string' command which generates no code but will show
- a warning during compilation
- Added GEC_3_4_0 auto generated #define macro which will allow you
to check for a minimum version of the compiler. New defines will be
additionally created for each new version of the software.
- Added #ELSE #ELIFDEF #ELIFNDEF preprocessor commands
- Added #UNDEF preprocessor command
- Added 020 optimised versions of Long, Int and Char functions
- Added StrIns(estring,estring,pos) - insert string function
- Added StrRem(estring,pos,len) - remove substring function
- Store full path of source files when generating debug hunk (allows
EDBG to find the files if they are not all located in the same
folder).
- v47 (OS3.2) emodules, including all the new reaction interfaces
- ARRAY OF CHAR no longer word aligned in OBJECTS
- NOT operator works correctly with immediate values (eg "NOT 0" did not
work correctly.
- MUL/DIV optimisations also working for 020 generated code.
- NOALIGN now requires 020 as accessing unaligned INT or LONG will result
in exception if you don't have 020.
- Fixed optimiser bug in library calls where IF function was used in
a parameter that prevented the correct value from being passed.
- Fix: x AND 0 was returning incorrect value @pch, post #5
@vojo, post #6
@vojo, post #1