🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Epoch Task List

Published February 21, 2009
Advertisement
Latest Progress
I've finally managed to get the table-driven implementation of the assembler working smoothly; apparently there are a lot of weird corner cases in my assembly language [smile]

The plus side is that it's now much simpler to extend the assembler. The downside is that I'm still working against the reference disassembler that shipped in Release 5 - I still have to convert it over to the table-driven system. To make things nice and interesting, I also seem to have broken the binary loader, so very few parts of the Epoch toolchain are actually usable at the moment.

Thankfully, with the practice I've gotten on the assembler side of things, converting the disassembler should go pretty fast. The table is already set up and correctly assembles the language, so operating it in reverse mode shouldn't be too difficult.

Along the way I got tired of reading flat EpochASM files in Notepad, so I threw together a simple pretty-printer that indents the ASM code when new scopes or code blocks are entered. This made a huge difference in tracking down the last few bugs in the assembler table; I'll probably end up polishing it up a bit and integrating it with the FugueASM tool.


Task List
As promised earlier, here's my current working to-do list for Release 6:


Critical Features
  • Finish binary deserializer in Fugue

  • Implement short-circuiting on logic operators

  • Finish some corner cases in nested structure accessing

  • Improved syntax for initializing structures

  • Allow libraries to register constants, externals, etc.

  • Fix bug where compiled EXEs do not terminate correctly

  • Fix remaining hard-code offsets in Exegen


Code Cleanup/Refactoring
  • Finish use of DetermineEffectiveType() in ParserState::CreateOperation()

  • Examine binary loader in Fugue for simplifications


Code Rewrites
  • Convert disassembler to table-driven system

  • Examine built-in operation loader for possibilities to use tables there as well


Nice To Have
  • Buffer entity (stack/heap)


Era - The Epoch IDE Project
  • Convert existing tools to CLI format

  • Extend resource compiler to support menus, dialogs, etc.

  • Create a basic shell window with necessary menus

  • Add rough editing capabilities

  • Implement support for Epoch programs implemented across multiple files

  • Refactor IDE code into modules once this is available

  • Update IDE to handle "projects"

  • Implement REPL

  • Implement resource editors in the IDE



So obviously there's a huge amount of stuff to be done, and we're not likely to see Release 6 for quite a while.
0 likes 1 comments

Comments

Telastyn
It is interesting that we're working on the polar opposites of the problem. Perhaps more appropriately, I'm going about things backwards as usual. Still interesting to see how you break the problems down, the pace to things, and how frequently stuff gets re-worked.
February 21, 2009 10:59 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement