public
Description: A just-in-time compiler for MIT 6.004's "Beta" processor.
Homepage:
Clone URL: git://github.com/nelhage/bemu.git
bemu /
name age message
file COPYING Thu Jul 03 20:27:22 -0700 2008 Add COPYING and README [nelhage]
file Makefile Sat Nov 07 12:30:18 -0800 2009 Add the test binaries to the default target. [nelhage]
file README Mon Jan 19 21:12:46 -0800 2009 Update source link. [nelhage]
file SConstruct Tue Jul 01 20:47:40 -0700 2008 Default to -O2, since I'm now thinking about pe... [nelhage]
file TODO Wed Apr 15 22:09:36 -0700 2009 Remove two TODO items. [nelhage]
file bclock.c Fri Oct 03 14:28:05 -0700 2008 bclock.c: Use setitimer(2) in place of POSIX re... [nelhage]
file bclock.h Sun Jun 29 17:23:29 -0700 2008 Implement timer interrupts. Currently only supp... [nelhage]
file bconsole.c Tue Jul 07 22:39:56 -0700 2009 Return -1 to RDCAHR on end-of-file. [nelhage]
file bconsole.h Thu Jul 03 19:42:28 -0700 2008 Compile with -Wall and fix all the warnings it ... [nelhage]
file bcpu.c Sun Nov 08 19:40:50 -0800 2009 Add support for profiling the executed program ... [nelhage]
file bcpu.h Sun Nov 08 19:40:50 -0800 2009 Add support for profiling the executed program ... [nelhage]
file bdecode.c Sun Jun 29 17:56:28 -0700 2008 Implement the WRCHAR() callout [nelhage]
file bdecode.h Sun Nov 08 19:40:50 -0800 2009 Add support for profiling the executed program ... [nelhage]
file bemu.c Sun Nov 08 19:46:59 -0800 2009 Attempt to shut the CPU down cleanly on a SIGINT. [nelhage]
file bemu.h Sun Nov 08 19:40:50 -0800 2009 Add support for profiling the executed program ... [nelhage]
file bt.c Sun Nov 08 19:40:50 -0800 2009 Add support for profiling the executed program ... [nelhage]
file bt.h Sat Nov 07 12:30:19 -0800 2009 Skip the (PC == %eax) check in most frags. Gen... [nelhage]
file bt_helper.S Sat Nov 07 12:30:19 -0800 2009 Skip the (PC == %eax) check in most frags. Gen... [nelhage]
file insts.pl Sun Jun 29 11:11:01 -0700 2008 insts.pl: Wrap codegen macros in braces for bet... [nelhage]
file run-tests.sh Sat Nov 07 12:30:18 -0800 2009 run-tests: Fix options for running 'timer' [nelhage]
directory tests/ Sat Nov 07 12:30:18 -0800 2009 Import a version of the Richards benchmark. [nelhage]
directory uasm/ Fri Oct 03 20:06:04 -0700 2008 uasm.c: Use realloc() instead of mremap() [nelhage]
file x86.h Sun Nov 08 19:40:50 -0800 2009 Add support for profiling the executed program ... [nelhage]
README
This code implements a working Just-In-Time binary translator from the
Beta [1] processor to the i386. It supports clock and keyboard
interrupts, and correctly executes lab6.uasm, bench[1-4].uasm, and
litmus.uasm, as well as Lab 8's operating system [2].

This source is canonically available from github at
<http://github.com/nelhage/bemu/>.

It should work on just about any modern Linux or Intel OS X system,
although it's better tested on Linux. I've tested it on Athena and it
works fine there.

To run the self-tests, `make test'; To run the lab8 OS, `make
run-lab8'.

It alsos includes a somewhat hacked version of `uasm' from
http://web.mit.edu/6.004/src/posix-src/uasm/, modified to deal with
relative includes slightly better, and to support arbitrary-sized
ROMs.

[1] http://6004.csail.mit.edu/currentsemester/handouts/beta.pdf
[2] http://web.mit.edu/6.004/bsim/lab8.uasm