Undergraduate Compiler Project

The capstone project for my Computer Science degree is a virtual machine and compiler written from scratch.
The original requirements for the virtual machine was for it to read and execute assembly code. Framing function calls on the stack was hand written in assembly. The vm also had to support pseudo multi-processing.
The compiler (the second semester of the capstone project) takes c-like source code and compiles it down to assembly code which can execute on the vm.

Extending the Project

I wanted to do more with the original project, so I spoke with the Professor, and he’s working with me to do independent study to improve the original design of the vm. I’ve modified the compiler so that it writes byte code to a file, instead of stopping at assembly. I also completely rewrote the vm in C++. I originally wrote the vm in Python (for convenience), but the Python vm is super slow. I had to implement a loader in the rewritten vm, since my compiler now outputs byte code.

Garbage Collection

The big piece of the project I’m working on right now is implementing a mark and sweep garbage collector. I had to reorganize the frames and put all the pointers at the top of the frame (otherwise the gc algorithm can’t find the pointers inside the method call). I’ve also reorganized the heap allocation to put pointers at the front of every object.
My plan for implementing the gc algorithm in the vm is to use the list of pointers in the main method as the root of the tree during the mark phase. Any allocated memory that can’t be reached from the the pointers in the main method will be considered unused and will be freed.

I’ll post more as I get close to completing this project (sometime this August). Is anybody interested in seeing source code or more details? Post if you’re interested.

Microsoft Office 2010 on openSUSE 13.1 64bit

This Post has moved here

Yes people, this really does work (and very well).

1. Install the latest wine from the community repo.

sudo zypper ar http://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_13.1/ wine
sudo zypper ref
sudo zypper dup -r wine
sudo zypper in wine samba-winbind

2. Install office
WINEARCH=win32 WINEPREFIX=~/.office wine /setup/directory/setup.exe

3. The office apps should now be in your menu, if not… (change OUTLOOK.EXE for whatever you’re opening)
WINEARCH=win32 WINEPREFIX=~/.office wine ~/.office/drive_c/Program Files/Microsoft Office/Office14/OUTLOOK.EXE &

4. Add a library override for riched20:
WINEARCH=win32 WINEPREFIX=~/.office winecfg
Go to the Libraries tab, type “riched20” in the “New override for library” box, then click Add, then Apply.

If you need to configure Outlook:
First open Outlook, and tell it to NOT configure mail at this time (configuring mail within Outlook appears to be broken).
WINEARCH=win32 WINEPREFIX=~/.office wine control
Click on Mail. The rest is the same as if you were configuring on Windows.

Here are some more specifics for actually installing Office: http://appdb.winehq.org/objectManager.php?sClass=version&iId=17336
Only the 32-bit installer works. I happen to be using MS Office 2010 Professional Plus.

Screenshot from 2013-02-07 09:54:49