Jump to content
  • entries
  • comments
  • views

Neolithic v0.3 alpha release



It's been too long... so I figured I'd take the time to release another version of the compiler.  I spent a lot of effort doing cleanup in the code base (paying dev taxes).  There are a few good features that have been added, but mostly bug fixes and compiler code cleanup.


Here's the compiler (with some test code) for Win/Mac:




AND the latest Congo Bongo source with Windows Batch file to build the different TV format versions (NTSC, PAL50, PAL60):




Hopefully everything builds.... let me know if it doesn't.









I see that quite a few people have downloaded the previous version of the compiler and the Congo Bongo code base.  Please feel free to ask questions or share any feedback you may have.  The language is still in flux, so if you have any suggestions / feedback in that area, please let me know.



Changes from previous version


 - Added "alias" identifier types to allow name aliasing of variables / variable references.
      These help the compiler generate more optimal code when referencing a specific element
      of an array of structs.
 - Added more functionality to enums:
    - Un-named enum lists now work.  Each enum value gets added to main symbol table as consts.
    - Named-enum lists have their own scope.  Using one of the enumeration values within now requires
        referencing with the enum list name.  This is mainly to put them in-line with how named-structs work.
 - Added a bit more functionality to array references.
 - Started adding some command line parameters. 

         Run 'neolithic' without any arguments to see the list.
 - Started adding more compiler directives.
       + #echo
            - Allows user to print debug information during compile-time.
       + #use_quick_index_table
            - Allows user to specify that an array should have an index table created to
               make element access quicker... mainly useful for array of structs.

 - Begun to write test cases for all the features of the compiler.


 - Fixed some tidbits with the assembly processing and opcode support.
 - Switched more of the assembly ops to display as variable references instead of just absolute memory addresses.
 - Fixed call-tree analysis to help eliminate some problem cases with overlapping variables.
 - Improved assembly output to show missing source code lines case statements, do-while).
 - Fixed tokenizer to process tokens up to 82 characters in length.
        This was fixed to allow supporting long string literals for #echo.


Compiler memory usage optimization and cleanup.
 - Added separate allocation functions to help track memory usage.
 - Major cleanup/rework of the compiler symbol table / record subsystem.
      Basically, a lot of things were consolidated and/or simplified.
 - Added in hash-based identifier storage system.



Compiler code stats for anyone who's interested (numbers include the source code tests provided above):

Language                     files          blank        comment           code
C                               44           1937           1723           8600
C/C++ Header                    33            328            210            884
CMake                            1              4              2             65
Markdown                         1             23              0             41
DOS Batch                        2              0              0              7
SUM:                            81           2292           1935           9597



Recommended Comments

There are no comments to display.

Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...