First, how do you define a "good build code"? The fastest code, the most compatible with ABI code, or the code that is easiest to read? I think that βgoodβ depends on a common goal, and you really did not tell us what you want to use for assembly.
Others recommended writing a rasterizer software. I could catch on to this, but since you already know the x86 mnemonics, you don't need to write more build code. You need to understand more about how cars work under the hood.
My suggestion is to write an emulator of a system-wide or user space. I wrote a system emulator for ARM920 and learned a ton without writing one prefabricated mnemonic! Well, it ended up slow, slow, but I wrote it as a translator in pure C. Now I know most of the dark secrets of the ARM architecture, and this has given me a new perspective on how embedded computers work.
Just remember that peripherals can be difficult to follow. There is nothing wrong with emulating a processor, but adding simplified psuedo peripherals. If you are good, you can even create a plug & play system for them.
You might want to check out QEMU and DosBox to get good ideas, although they use a JIT scheme. My interpreter is here gp2xemu . It was an attempt at an emulator for GP2x, but I was stuck due to sucking documentation.
Mads elvheim
source share