09.Mar.2024
|
Amiga E Compiler: E-VO 3.7.0
E-VO Amiga E Compiler is a derivative of the original Amiga E compiler written by Wouter van Oortmerssen. It adds many new features, bug fixes and optimisations including object UNIONs, string merging, non word-aligned objects and many more (amiga-news.de reported).
Darren 'dmcoles' Coles has now released version 3.7.0. Changes:
- Compiler sometimes produced garbage error message with an error at the very
end of the file.
- Reformatted the Amigaguide document to better fit in 80 columns.
- added Arexx compile scripts
- allow creating a new object directly into an object member,
eg. self.a:=NEW self.a.method()
- method table was not correctly initialised for objects declared as
eg. DEF a:b OR DEF a[5]:ARRAY OF b
- heap in compiler is allocated with MEMF_CLEAR in compiler to ensure all
data in the exe is initialised to 0 and not contain random data from
memory
- calling a method on an array element of an object did did not calculate
the correct address for the method.
- compiler was creating 020 opcodes when accessing an array of objects
- added NIL pointer checks when calling methods on array of objects
- self variable was set incorrectly for methods declared with an exception
handler
- fix issue with wrong opcode being generated in this code
DEF a
DEF b:PTR TO LONG
a:=[0,b[0]:=5]
resulting in the value not being stored correctly
- include textfield module
- fix bug in reaction_lib with the freeClickTabs, freeChooserLabels and
freeRadioButtons functions not looping through the list correctly.
- add support for long branch 020 instruction.
- fix invalid memory access when casting the result of a procedure call
to an object
- fix inconsistencies with SIZEOF command
- fix error in branching code for the == operator
- add missing listview module
- add some extra functions in reaction_lib (openClass, openLibs,
closeLibs, libDoGadgetMethodA)
- added PSIZEOF operator
- added ARRAYSIZE operator
- added SelectFirst function
- added debug symbols for methods
- allow CONT and EXIT within SELECT statement
- updated Rnd() function to be pure
- flagged openw, opwns, boolgad, settopaz, sets, gets functions as not pure
- added WARN TRUE/FALSE to enable/disable warnings
- added Rol() and Ror() functions
- the 020 variant of Mod() was not correctly used by the compiler and
was also taking the parameters the wrong way around
- added 020 variant of ListItem function
- track line numbers for warnings
- NOREGS option was not correctly parsed on methods
- taking a reference to a method {obj.method} did not return the
correct address
- 1.3 startup code now updates stack pointers to allow stack space
functions to return the correct values.
- skip NameFromFH call on kick 1.3 meaning the compiler now works
on that OS again
- NOT operator was very broken (inconsistently applied and in some cases
not applied at all)
- Added EVO_3_7_0 define
- casting and PTR TO PTR handling is improved and should now work in all
use cases.
Direct download: evo.lha (673 KB) (dr)
[News message: 09. Mar. 2024, 21:16] [Comments: 0]
[Send via e-mail] [Print version] [ASCII version]
|