Bochs x86 PC emulation FAQ
Author: Kevin Lawton
Description: Bochs FAQ
Keywords: pc emulation, x86 emulation, emulator

# Welcome to the Bochs x86 PC Emulation Software Home Page!

# Bochs FAQ

Q: Is bochs Open Source?.
Yes! Thanks very much to MandrakeSoft, producers of the much acclaimed Linux-Mandrake distribution. They have enabled bochs to be made Open Source, and I have become part of their team, working on plex86/bochs. Bochs is now released under the GNU LGPL.
Q: Who is the author of bochs?
Well, I'm (Kevin Lawton) the primary author of bochs. There have been bug fixes, enhancements, and code contributions from some few hundred people to date. Support has been incredible! And it's growing. Without it, I would have quit years ago.
Q: How do you pronounce "bochs"?
Phonetically the same as the English word "box". It's just a play on the word "box", since techies like to call their machines a "Linux box", "Windows box", ... Bochs emulates a box inside a box.
Q: Tell me about peformance when running bochs?
Up to now, bochs has exclusively used interpreter emulation technology; fetch in an instruction, decode, then execute it. I am currently in the process of adding dynamic translation, which allows for small x86 code sequences to be translated into native CPU code sequences, on-the-fly. This native code is cached, so it can be run any number of times thereafter. There's an architecture neutral part to the dynamic translation, and an architecture specific part (back-end). There needs to be a back-end for each platform bochs runs on. It's too early for me to comment on performance using dynamic translation. But, I have tested a few code sample, and I walked away with a smile on my face. I'm hoping to release the framework for this in the next release or two. It won't have many instructions translated, but those will be added incrementally, and quickly, once the framework is stable. The first backends will support Linux/x86 and BeOS/x86. Probably SPARC after that. It would be helpful if I could get a high-end PPC platform loaner. Multiple CPU's would be wonderful, but not essential. I'll need one for writing a back-end for it. Also, I want to add threading to bochs. At some point, I want to put certain parts (optionally) in their own thread. Also, I believe with very careful lightweight thread communication, it may be possible to thread the CPU emulation itself. This idea was suggested on the developer's email list.

So, back to your question. If you need speed, wait for dynamic translation. In interpreted mode, I get approximately 1.5MIPS using bochs on my 400Mhz PII Linux machine. In dynamic translation mode, you will see a lag as bochs encounters new code, then it'll get snappy and run at a much higher rate than in interpreted mode.
Q: Does bochs use a disk partition to install the OS?
No. You use a disk image file, which is simply a large file, like any other file, on your platform's disk.
Q: Why can't I use Bochs with my current Win95 installation?
Think about this. If you had two different PC's, they would require different hardware drivers. So you may not be able to safely move a disk drive with Win95 on it, from one to the other. Bochs is no different. It emulates a certain set of hardware devices, and requires each OS be configured for those devices.
Q: Is there a developer's email list for bochs?
Yes. For instructions on joining, go to Developers email-list.
Q: Is there an irc channel for bochs?
Not that I am aware of.
Q: Do you know of any snapshots of Bochs running Win95?
There are some on external project sites. Look at the main bochs web page under "What is Bochs" or other topic. I don't include any, because I'm trying to keep the web site very low bandwidth.
Q: Does bochs support a CDROM?
Not yet. However you can use the "mtools" package on quite a few platforms, to copy files from your CDROM to a disk image file. Make sure to comply with all software copyright issues.
Q: Does bochs support a sound device?
Not yet. There are efforts in this area going on by contributing authors. The emulation is of a Sound Blaster.
Q: Does bochs support a network card?
Not yet. There are also efforts in this area going on by contributing authors. The emulation is of an NE2000 NIC, and I'm told it's quite far along.
Q: What applications are known to run inside of bochs?
Well, lot's of different OS's run inside of bochs, so thousands. I'm assuming your asking about Windows programs. To give you a few, the following ones from the Winstone'98 tests worked:

- Access 97
- CorelDRAW! 7
- Excel 97
- Lotus 1-2-3 97
- Word 97
- PowerPoint 97
- Quattro Pro 7
- WordPerfect 7

Also, I've compiled an entire OS kernel inside bochs before. Not to mention, running DOOM, though at then-pathetic speeds.