bewing's complete bochs rewrite: test request
Posted: Thu Apr 29, 2010 7:34 am
After a piece of code is created, it ends up getting patched unmercifully. This happens to almost all code. After too many patches, it is mandatory to rewrite the code from scratch: to properly incorporate all the kludgy patches ... to organize the code the way you realize it should have been organized in the first place ... and to add new features that were impossible with the previous design.
Bochs reached that point a long time ago. It is unreadable. I can't bear it. I decided to sacrifice my sanity and take on the job of rewriting the whole damned thing from scratch. So, ReBochs is my new complete rewrite of bochs that I've been working on for the last year. I am hoping that as a community we can collaborate on making this a significantly better emulator than either bochs or qemu. I am confident that the new basic design of this code can get us there.
A Subversion repository lives at QuokForge: svn co http://svn.quokforge.org/svn/rebochs/
Sourcecode files can also be downloaded at QuokForge: http://quokforge.org/projects/rebochs/repository
A tarball and a zipfile (with a pre-compiled Win32 build) can be downloaded from: http://quokforge.org/projects/rebochs/files
Please email any bug reports or code suggestions to me -- the best address is in the attached documentation file alpha_test.txt
Soon-to-be Advantages of ReBochs:
ReBochs is "ISC" (public domain) licensed, and has no bochs code in it
Benign and Nasty modes! I think this will be everybody's favorite feature (see the attached documentation for a description)
The code should be at least a million times easier to read than bochs
-- I know that's still not saying much, but it should make it easier to maintain and collaborate on it
ReBochs does not need special disk image files -- any old file will work (including raw disks soon)
The hardware models should be more accurate than the ones in bochs
There is hardly any conditional code in ReBochs
-- this makes the config/compilation process much simpler (and makes the code easier to read)
-- it also means that all hardware models can be turned off and on without recompiling
The code is designed to model up to 65 thousand CPUs, in a NUMA configuration
The code is designed to be easy to port to any hobby OS
The code is designed to be easy to port to any newfangled GUI API
The code is designed to run in a multithreaded multiCPU environment
The number of simulated CPUs per thread is user-configurable
Multiple styles of x86-type CPUs (with varying capabilities) can be modeled
The debugger interface is completely standardized, so you can freely write your own
The BIOS has been rewritten by Brendan and me, and has some advantages over the bochs BIOS
-- specifically in simplicity, readability, maintainability, and being "traceable" so far
The Make procedure has been tremendously simplified -- all the bochs "Make" problems with Windows are gone
There are long-term plans to add important new features and models
I am confident the code will be significantly faster than qemu (and certainly bochs)
Full support for OSX
Fast to configure and build
If you compile this code, see an executable size of 300 to 360K, and think to yourself "That can't be right!" -- it is. I write very tight code.
Current drawbacks & problems:
Most of the above features are only partially implemented so far
There is still lots and lots of stubbed code -- ie. floating point, mmx, sse, longmode (I'm coding as fast as I can, but oh well)
Current emulator version status:
Real mode should be running
Pmode is 99% running
-- a few rarely-used pmode-specific opcodes are still stubbed
Long mode is completely stubbed
Current debugger status:
GUI: 95% working, but some features have been stubbed out -- especially the parameter tree
Textmode: 10% working
If you are interested in submitting code/doing alpha testing, please read the attached document for more details.
Bochs reached that point a long time ago. It is unreadable. I can't bear it. I decided to sacrifice my sanity and take on the job of rewriting the whole damned thing from scratch. So, ReBochs is my new complete rewrite of bochs that I've been working on for the last year. I am hoping that as a community we can collaborate on making this a significantly better emulator than either bochs or qemu. I am confident that the new basic design of this code can get us there.
A Subversion repository lives at QuokForge: svn co http://svn.quokforge.org/svn/rebochs/
Sourcecode files can also be downloaded at QuokForge: http://quokforge.org/projects/rebochs/repository
A tarball and a zipfile (with a pre-compiled Win32 build) can be downloaded from: http://quokforge.org/projects/rebochs/files
Please email any bug reports or code suggestions to me -- the best address is in the attached documentation file alpha_test.txt
Soon-to-be Advantages of ReBochs:
ReBochs is "ISC" (public domain) licensed, and has no bochs code in it
Benign and Nasty modes! I think this will be everybody's favorite feature (see the attached documentation for a description)
The code should be at least a million times easier to read than bochs
-- I know that's still not saying much, but it should make it easier to maintain and collaborate on it
ReBochs does not need special disk image files -- any old file will work (including raw disks soon)
The hardware models should be more accurate than the ones in bochs
There is hardly any conditional code in ReBochs
-- this makes the config/compilation process much simpler (and makes the code easier to read)
-- it also means that all hardware models can be turned off and on without recompiling
The code is designed to model up to 65 thousand CPUs, in a NUMA configuration
The code is designed to be easy to port to any hobby OS
The code is designed to be easy to port to any newfangled GUI API
The code is designed to run in a multithreaded multiCPU environment
The number of simulated CPUs per thread is user-configurable
Multiple styles of x86-type CPUs (with varying capabilities) can be modeled
The debugger interface is completely standardized, so you can freely write your own
The BIOS has been rewritten by Brendan and me, and has some advantages over the bochs BIOS
-- specifically in simplicity, readability, maintainability, and being "traceable" so far
The Make procedure has been tremendously simplified -- all the bochs "Make" problems with Windows are gone
There are long-term plans to add important new features and models
I am confident the code will be significantly faster than qemu (and certainly bochs)
Full support for OSX
Fast to configure and build
If you compile this code, see an executable size of 300 to 360K, and think to yourself "That can't be right!" -- it is. I write very tight code.
Current drawbacks & problems:
Most of the above features are only partially implemented so far
There is still lots and lots of stubbed code -- ie. floating point, mmx, sse, longmode (I'm coding as fast as I can, but oh well)
Current emulator version status:
Real mode should be running
Pmode is 99% running
-- a few rarely-used pmode-specific opcodes are still stubbed
Long mode is completely stubbed
Current debugger status:
GUI: 95% working, but some features have been stubbed out -- especially the parameter tree
Textmode: 10% working
If you are interested in submitting code/doing alpha testing, please read the attached document for more details.