🎉 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!

Captain's Log, Stardate 0x47EB

Published February 22, 2009
Advertisement
Took a couple of hours today to clean up the disassembler table a bit and make it nice and formatted-looking. I also took some common instruction sequences and extracted them to "meta-instructions" to reduce the amount of duplication in the table. Overall I'm pretty happy with the results.

Aside from general tweaking and improvements in the utilities, I've started converting everything from a text menu driven format to a more traditional command-line format, with switches and parameters and all that good stuff. This gives us two advantages: first, it's much easier to use the utilities as a group since we have the option of doing things like batch files and so on. Secondly, it makes it much simpler to invoke the tool from the IDE.

I'm actually collapsing both FugueASM and FugueDLLClient into a single utility, FugueShell. This app will serve as a general jumping-off point for any of the typical Epoch work: compiling, assembling, disassembling, running source code (or binaries), assembly code formatting, and so on. I like this setup because it makes it simpler to remember how to use the tools. It also makes it trivial to support things like batch code formatting, batch compiling, etc.


So all in all today's work is primarily just making things more robust and accessible. I'm trying to stick to a pretty simple set of principles on this project:

  • Get it working as soon as possible - then release it

  • When things need improvements, make them immediately - then release them

  • Always aim for the goal of writing real production code in Epoch


Everything is filtered through these three pragmatic rules. While it means that occasionally development of language features will slow down for a time, it also means that we should always be no more than 1 release away from well-polished, powerful, and accessible tools - tools which can be used for real world applications.
0 likes 4 comments

Comments

nolongerhere
Howdy,
So tonight I was going to open up Epoch and play with the Epoch Assembly language, but it seems its a bit hard to explore. It really seems like something, at this point atleast, that is more like a configuration file and ment to be generated by another programmer, instead of tinkered by someone. Though I realize that it IS suppose to be generated by the compiler and not me, I cant help but be disappointed :(
Perhaps a little documentation on the assembly language would help?
February 23, 2009 11:10 PM
ApochPiQ
At the moment the assembly language is still changing fairly often, especially when new flow control is introduced. (For example, the upcoming implementation of short-circuiting logical operators will introduce some new quirks to the assembly.) So due to this it isn't really a good idea to start producing documentation IMHO, because then I have to maintain the documentation on top of all the other work that needs to be done.

It should be pretty easy to learn, though; just hack around in the actual Epoch language for a while, and compile it every now and then. The mapping from Epoch source to EpochASM is very clean, so it should be possible to figure out the assembly code just from some experimentation.

The bottom line though is that EpochASM is meant as an intermediate stage between the high-level compiler and the binary packager. While you can technically code against the VM using this language, it's a bit like writing .Net CLR code by hand - or, worse, using the intermediate output from gcc's front end rather than C++. In general, people are going to be using Epoch for the top-level language's sake - not because it has a nice intermediate assembly language. It doesn't really make sense from a project management perspective to pour a lot of effort into something that will only interest a tiny fraction of the language's users.
February 24, 2009 10:44 AM
nolongerhere
Quote: Original post by ApochPiQ
only interest a tiny fraction of the language's users.


You dont care about my needs :(

February 24, 2009 02:40 PM
ApochPiQ
It shouldn't take more than an hour for a reasonably experienced programmer to figure out the assembly language. Like I said, the mapping to raw Epoch code is very simple and (mostly) follows very simple rules. You can also learn a lot by assembling and then disassembling the same program - you will find pieces of information that are irrelevant and discarded by the assembler. This should go a long way towards identifying the basic structures and patterns of the language.

If you can justify why I should spend time on documenting the ASM language, rather than you taking this easy hour to figure it out, I'll be glad to oblige [wink]
February 24, 2009 09:50 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement