Coding Guidelines For Bochs
- Don't make use of any external C++ classes. They are not offered
on all platforms and this would make bochs non-portable. There is use of
such classes in the optional debugger. I plan on removing this use.
- Don't use fancy C++ features. Bochs is incredibly
performance sensitive, and will be increasingly so as more speed
enhancements are added. There's a time and place for most
everything and this is not it. Some advanced features
create overhead in the generated code that you don't see.
They also convolute the code, and sometimes occlude
what is really going on.
- Don't use templates.
- Don't use virtual functions.
- Don't use C++ exceptions.
- Don't use overloading of any kind.
- Use soft tabs. At least when you submit code, convert all
hard tabs to spaces. There is no uniform way to handle
tabs properly.
- Prefix screen spew with a pound sign ('#').
If you want to spew something out to the screen rather than
the bochs.out file, send it to stderr (not stdout), and prefix the string
with a pound sign. This is so that a text interface which
drives bochs (the debugger) can discern between messages and
command responses.
- Please do compile with all warnings turned on. It's really
difficult to spot interesting warnings when a compile is littered
with non-interesting ones.
- Don't use signed ints where unsigned will do.