The Bag of Holding

Profile
Bellevue, WA
A bipolar guy in a pressure-cooker industry
1,455 comments
44 followers
628 entries
Advertisement
ApochPiQ
March 04, 2009
And now for something exactly the same
[edit] I just realized that this is basically a complete rehash of Monday's post. I am stupid. Feel free to skip this if you already read the Monday entry. [/edit]


As I am prone to do, I've changed my mind on the prioritization of Epoch work in the near future.

Previously, my big push for Release 6 w…
362 views
ApochPiQ
March 02, 2009
Bringing you Teh Win since 2005
Wasn't quite as productive over the weekend as I hoped (dang social life keeps getting in the way) but I've made a fair bit of progress. Libraries can now register structures, function signatures, and constants with the VM. This means I can simply load the "Win32Util" library in an Epoch program, a…
321 views
ApochPiQ
March 01, 2009
Major milestone passed
My big area of focus lately has been on Exegen, the linker for Win32 Epoch programs. The utility no longer emits hard-coded resources, but reads a simple resource script file to define the resources. Similarly, the input/output files and locations are now controlled by a simple project file.

Here's …
410 views
ApochPiQ
February 28, 2009
Combat Training for Weekend Warriors
Since I actually managed to roll out of bed at a reasonable hour on this fine Saturday, I figured I'd put in a couple hours on the Epoch project.

So far most of my effort has been focused on the Exegen linker - specifically the resource compiler portion. It's relatively straightforward, but everythi…
328 views
ApochPiQ
February 22, 2009
Captain's Log, Stardate 0x47EB
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 fro…
369 views
ApochPiQ
February 22, 2009
Some Disassembly Required
Alas, I spent most of the day off in the Big Blue Room having one of those "social life" thingies, so I didn't get a huge block of time to hack on Epoch today.

However, I did manage to get the table-driven disassembler finished; the same blob of macro magic now powers both the assembler and disassem…
378 views
ApochPiQ
February 21, 2009
Epoch Task List
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 a…
354 views
ApochPiQ
February 20, 2009
Adventures in Assemblers
Epoch Q&A
Thanks for everyone who's posted for the Q&A. I'm still considering it open, so fire away with all those questions. See the post a couple days prior to this one for the current set of questions and answers.


Current Status
There's something I've wanted to do ever since I wrote the fir…
367 views
ApochPiQ
February 19, 2009
A Glorious Victory for the Empire
My biggest time sink over the last couple of days has been my new Epoch tool, Exegen (rhymes with oxygen). Exegen is a linker for Win32 Epoch programs. In essence, it automates the process of starting the VM and feeding it Epoch code.

To be specific, Exegen actually fabricates an .EXE file from scra…
331 views
ApochPiQ
February 16, 2009
Resource files suck
Status Update
My big challenge at the moment is to finish the part of the toolchain that builds a final wrapped .EXE program from Epoch source code. I have the rest of the toolchain in place, and used some dirty hackery to generate my test .EXEs; however, this time I'm aiming to do it right and gene…
501 views
ApochPiQ
February 15, 2009
Epoch Release 5 is here!
OK, I'm a lying little bugger and should be viciously and repeatedly punched in the face.

I decided to go ahead and package up R5 tonight. There's really not much left that needs to be implemented - at least, nothing that's worth delaying the release.

As mentioned in my previous post, R6 will basical…
347 views
ApochPiQ
February 15, 2009
Guess what I'm gonna talk about!
I started implementing bitwise operators in Epoch this afternoon, and stumbled across a couple of massive refactorings that I'd like to do. The specifics aren't interesting, but the bottom line is I can make the instruction-emitter part of the compiler work much more efficiently and consistently, e…
356 views
ApochPiQ
February 14, 2009
Bugs are crunchy. And good protein.
Amid a horde of distractions, I managed to hunt down and viciously kill the stack corruption bug. There were actually several minor bugs that all conspired to drag me out into undefined-behaviour-land.

The specifics aren't really interesting to anyone who isn't deeply familiar with the VM code (whic…
322 views
ApochPiQ
February 14, 2009
The Chronicles of Epoch
Spent a few minutes earlier playing around with what I thought was the finalized version of nested structure support... and then I discovered a pretty serious bug. Somehow, the stack management is getting out of sync with the actual instructions, and the code is reading and writing data in effectiv…
343 views
ApochPiQ
February 12, 2009
Epoch status report
As of 1650 hours today, this is where the release task list for R5 stands:

Requirements for Win32 Programming
  • Named constants

  • Hex literals

  • Bitwise operation instructions

  • Byte buffer entity

  • (Some fixes to nested structures)


Major implementation items
  • FileLoader::LoadScope needs tuple and structure support

  • Fi…
371 views
ApochPiQ
February 11, 2009
Epoch makes history!
It was quite a ride, and involved far more use of hex editors and obscure console commands than should be legal, but I've finally got it working - it is now possible to embed Epoch programs inside a stub EXE, allowing you to run purely from binary form - no source code required.

Give it a shot. It's…
378 views
ApochPiQ
February 11, 2009
Your daily dose of Epoch
Not much to say, just wanted to note that I've finished the disassembler (aside from a few obscure instructions I haven't added yet).

This gives us five major tools for working with Epoch:
  • The Fugue virtual machine

  • EpochASM assembly language for the VM

  • Compiler that translates raw syntax into EpochASM

  • A…
  • 363 views
    ApochPiQ
    February 10, 2009
    Yet another post about Epoch
    Spent the last couple of hours putting together an assembler for the VM bytecode format. This converts nice assembly language like this:

    00DE4DD8 PUSH_INT 0
    00DE4D58 PUSH 00DE43A0 INVOKE 00DD8D30
    00DE5090 WRITE hInstance
    00DE5D98 PUSH_INT 0
    00DE5DF8 PUSH_STR 13 ScribbleClass
    00DE5918 PUSH_STR 0
    00DE5D50 …
    335 views
    ApochPiQ
    February 10, 2009
    Epoch, again.
    Took a bit of effort, but I've managed to implement if/elseif/else chains in the Epoch VM. This makes it substantially simpler to write complex conditional chains.

    It may seem odd that something so simple took a lot of work; surely it's just a matter of popping a couple of conditional jump statement…
    412 views
    ApochPiQ
    February 09, 2009
    Epoch Success!
    Bask in the utter awesome:



    As the screenshot says, this app is written 100% in the Epoch programming language. The complete listing is fairly long, but most of it is declaring API function calls and structure types. Eventually I'll add support for multi-file compilation, and we can then move all the…
    414 views
    ApochPiQ
    February 08, 2009
    An Epoch weekend
    Had another few spare hours today, so I sat down and made some improvements and did some bugfixing in the Fugue VM code.

    I honestly don't remember everything I did - I'm deliberately not doing changelists for the first few releases of Epoch, because things are moving so fast and stuff is still subje…
    374 views
    ApochPiQ
    February 08, 2009
    More Epoch shtuffs
    Had some more free time today so I hacked in some support for nested structures. Basically, this lets you create a structure which has members that are also structures. The Win32 API is crammed full of these scenarios, so it's a critical piece of foundational work for doing actual programming in Ep…
    427 views
    ApochPiQ
    February 07, 2009
    That "other" project
    This weekend I dug out the code for the Epoch language and started hacking around again. Several small things have been done, none of which are all that interesting; and one major thing is now functional.

    I've completed the marshalling layer that allows external code to call back into Epoch code. Co…
    341 views
    ApochPiQ
    January 13, 2009
    Memory Management Part III
    Managing Your Memory - Part III
    Tracking and Reporting Allocation Information

    When we left off at Part II, we'd developed a method for tracking the memory used by our program. The design delegates all tracking to two functions, which comprise most of the public interface of the memory tracking module…
    664 views
    ApochPiQ
    January 06, 2009
    Quick update
    For those of you who have been following the Memory Management article series, I'd like to make a quick update.

    As I've mentioned before on my journal here, I have been diagnosed with Bipolar I Disorder. Without getting into too much detail, this involves periods of my life where it is extraordinari…
    493 views
    ApochPiQ
    October 30, 2008
    Memory Management Part II
    Managing Your Memory - Part II
    Capturing Allocation Information From Your Program

    In the last post I discussed the rationale and general design of a memory management system for C++ programs. This time around, we'll talk about how to actually collect data on your memory usage from a running program.

    T…
    643 views
    ApochPiQ
    October 16, 2008
    Managing Your Memory - Part I
    Managing Your Memory - Part I
    Designing a robust memory management system for C++ software

    This is the first part of a series of posts which I will be putting up here over the next several weeks or so (provided I can come up with the material for an actual series).

    I will be discussing the topic of me…
    900 views
    ApochPiQ
    October 11, 2008
    Memory Management in Real Games
    Over the past week or so I've been working on a memory management system for our as-yet-unannounced project over at Egosoft.

    We had several goals for the system, including the ability to debug common memory issues (leaks, double deletions, premature deletions, orphaned blocks, and so on) and present…
    570 views
    ApochPiQ
    September 21, 2008
    The Epoch Manifesto
    The Epoch Manifesto
    Answering all the big questions about who, what, when, and why.

    Please note that this is highly forward-looking; it speaks in present tense, but most of this stuff won't be true until some point in the future.


    What is Epoch, exactly?
    Epoch is designed to be a full-featured general p…
    907 views
    ApochPiQ
    September 21, 2008
    Back to Epoch for a bit
    Took a break from Castle Crashers to play with Epoch. Didn't do much, but higher order functions now support reference parameters, meaning that this code is now possible:

    entrypoint : () -> ()
    {
    integer(foo, 41)
    operateref(foo, incrementref)
    }

    operateref : (integer ref(number), function op : (intege…
    394 views
    Advertisement

    Popular Blogs

    shawnhar
    Generalist
    101 Entries
    10 Followers
    15 Entries
    11 Followers
    johnhattan
    Programmer
    1,277 Entries
    48 Followers
    ApochPiQ
    Generalist
    628 Entries
    44 Followers
    dgreen02
    Generalist
    338 Entries
    56 Followers
    Advertisement