kategoria: Amiga E
[#1] E-VO: Amiga E Evolution
Darren Coles w dniu wczorajszym opublikował nową wersję kompilatora AmigaE dla amig 68k, którą nazwał E-VO: Amiga E Evolution.

EVO w prostej linii wywodzi się z oryginalnego AmigaE v 3.3a, bo jest rozwinięciem kompilatora GEC.
Sam GEC rozwijany był w latach 1999-2003 na bazie ostatniej wersji wypuszczonej oficjalnie przez Woutera van Oortmerssena w 1997 roku. W tym czasie dorobił się kilku optymalizacji, poprawek błędów i kilku nowych wbudowanych funkcji i słów kluczowych. Co ciekawe, GEC rozwijany był przez Polaka ukrywającego się pod ksywą Grio.

E-VO jest pierwszą (i mam nadzieję że nie ostatnią) wersją kompilatora E sygnowaną przez Darrena, i znowu przynosi kilka nowych ciekawych zmian, o których w poście niżej. Ale nowa wersja kompilatora to nie wszystko - Darren przygotował również nową wersje modułów E, które zawierają nowe tagi, makra i funkcje biblioteczne do systemu v47 włącznie (OS 3.2)! Np. nie ma problemu żeby robić GUI oparte na ReAction :)

Zachęcam do pobrania i testowania. Od ok tygodnia testuję EVO i widzę różnicę w porównaniu z Wouterowską v3.3a (część nowych dla mnie rzeczy pochodzi z GEC, którego jakoś nie miałem okazji poznać). Kompatybilność ze starą wersją 3.3a jest bardzo wysoka - wszystkie moje programy, mniejsze i większe skompilowały się bez konieczności wprowadzania najmniejszej zmiany, a dodatkowo EVO generuje mniejszy i szybszy kod wynikowy.

E-VO jest do pobrania z:
Aminet: http://aminet.net/package/dev/e/evo
Github: https://github.com/dmcoles/EVO
3
[#2] Re: E-VO: Amiga E Evolution

@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
1
[#3] Re: E-VO: Amiga E Evolution

@vojo, post #2

Na Aminecie jest wersja 3.4.1 a chyba nadchodzi 3.5.0, na githubie już jest opis w updates, 19 dni temu..
link
[#4] Re: E-VO: Amiga E Evolution

@Skotos, post #3

Ooo, dużo ciekawych zmian, i co mnie zwłaszcza cieszy ruszony jest EDBG OK
[#5] Re: E-VO: Amiga E Evolution

@vojo, post #4

Jakiego edytora uzywasz do pisania w E?
Chodzi mi czy jest z podswietlaniem skladni.

Dzieki.
[#6] Re: E-VO: Amiga E Evolution

@pch, post #5

Na Amidze próbowałem kilku edytorów freeware (Annotate, BareED) z podświetlaniem skladni, ale nie przekonałem się do nich, skończyło się na niezawodnym Redicie, jest po prostu najszybszy, tyle że poz podświetlania skladni. W planach testy Textedit z OS3.2, gdzieś widziałem info ze ktoś dodał kolorowanie składni E.
A najwięcej czasu z E spędzam jednak z Notepadem++, z uruchomionym w tle Winuae. Kolorowanie składni E w Notepadzie chyba robiłem sam. Testowałem też na windzie VSC, są gotowe plugin do E, i też daje radę, bardzo wygodny.
[#7] Re: E-VO: Amiga E Evolution

@vojo, post #6

Dzieki, interesowaly mnie edytory po stronie amigi.
W ramach treningu postaram sie zrobic kolorowanke E dla FrexxEd - podkreslam slowo postaram :)
Dam znac jesli cos z tego wyjdzie.

edit.
no i jesli to zadziala to pewnie otworze amigaE.guide i pojade z "hello world!" :) - bo blitz juz raczej nie dostanie update dla pisania pod system (chodzi o to co nowe z wb.3.2)

Ostatnia aktualizacja: 05.06.2022 21:57:15 przez pch
[#8] Re: E-VO: Amiga E Evolution

@vojo, post #1

Dzisiaj na Aminecie (i na GitHubie) pojawiła się nowa wersja E-VO autorstwa Darrena Colesa - 3.5.0.
Mamy aktualizację debuggera EDBG (!), dodany support do wielowymiarowych tablic (!), nowe operatory, funkcje, optymalizacji i całkiem sporo bugfixów. Lista zmian poniżej.

Zmiany w wersji 3.5.0:
  • Added ac020 object with pad int to allow optimised 32 bit writes on
    020+ courtesy of Samuel D. Crow
  • When compiling in debug, disable the optimisation that removes LINK,
    UNLK in procs where not needed (EDBG doesnt step properly when these
    aren't present)
  • EDBG: Add case insensitive search
  • EDBG: Added search next
  • EDBG: Display variable values in both hex and decimal
  • Fixed: Clears an extra byte in the String() initialisation causing
    memory corruption in the case of String(0)
  • EDBG: Enhanced breakpoints - multiple can now be set and can be
    seen/set in a column next to the code
  • EDBG: Support for multiple breakpoints and debugging while code is
    running.
  • EDBG: Added support for debugging under OS4.x (eg without using CPU
    exceptions)
  • EDBG: Added support for adding watch variables by entering name
  • Added support for DEBUG50 mode which allows debugging using JSR
    instructions instead of causing cpu exceptions which allows debugging
    under OS 4.x
  • Added support for multi-dimensional arrays
  • Added support for PTR TO PTR variables
  • Added EVO_3_5_0 define
  • Added ? operator (ported from CreativE)
  • Added OPT FPEXP (fpu floating point support - ported from CreativE)
  • Added :=: swap operator (ported form CreativE)
  • Added OPT INLINE (ported from CreativE)
  • Added OPT NOSTARTUP (ported form CreativE)
  • Added OPT UTILLIB (ported from CreativE)
  • Added NOREGS option (ported from CreativE)
  • Updated module format (now version 12) to account for multi-dimension
    arrays and PTR TO PTR type in object members
  • Ported some optimisation code from CreativE
  • Added ENDPROC WITH function (ported from CreativE)
  • Added == operator (range check - ported from CreativE)
  • Added new system constants TAG_DONE, TAG_END, TAG_INORE, TAG_MORE,
    TAG_SKIP, TAG_USER, OFFSET_BEGINNING, OFFSET_BEGINING, OFFSET_CURRENT,
    OFFSET_END (ported from CreativE)
  • Added new utilitybase variable
  • Added 020+ optimised MOD function
  • Added support for += -= etc operators (ported from CreativE)
  • ShowModule: Added support for new module format (version 12)
  • Added improved LONG,INT,CHAR routines from CreativE which allow
    expressions
  • Added improved SIZEOF command that allows SIZEOF objectvar
  • Allow \xNN for hex char in strings
  • Add ELSEWHILE and ALWAYS extension to WHILE LOOP (from CreativE)
  • Improvements to SELECT x to allow expressions (from CreativE)
  • Added LEGACY option to output module format version 10 and disable newer
    features
  • Fix: 2 << obj.val was generating corrupt code
  • Add SECTION (code and data) support
  • Fix: ReadStr return value was not completely compatible with EC (fix
    Pragma2Module bug)
  • ShowModule: Add -e parameter which will force output into a form that
    can be directly recompiled
  • Added a scanf module in the other folder
  • Allow string consts in modules
  • Allow float CONST definitions
  • Remove some unused startup code when OPT ASM in use.
  • ShowModule: Added support for string CONSTs
  • Added OFFSETOF to get the offset of a member of an object
  • Added MemFill, AstrClone, ListInsItem, ListRemItem, ListSwapItem functions
  • EDBG: Support for sections
  • FindModule: Coded new FindModule application from scratch with support
    for latest module format.
  • Make second parameter of SetStr optional and if not specified it will
    set the calculate the string length automatically
  • Added EndsWith function eg EndsWith(s,'A') returns TRUE if a string1 ends
    with string2
  • Fix: CHAR '' or CONST STR='' would cause memory corruption
  • Fix "3*SIZEOF LONG" error
  • added AstpCopy and UsedStack and StackSize functions
2
[#9] Re: E-VO: Amiga E Evolution

@vojo, post #8

EDBG niestety mocno niestabilne póki co każde odpalenie prędzej czy poźniej kończy czerwone guru
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem