I am writing a Tiger compiler in F# and I have decided to emit x86 assembly. I know the basics of how a machine is constructed and also a bit of assembly, but not enough to write a good compiler back-end.
What resources can you recommend for learning what I need to know?
Where can I look up information such as calling conventions, etc.?
My plan is to get an inefficient back-end working correctly and then gradually improve it. For the first version I am looking for information about the subset of instructions and registers which I will actually need for a rudimentary back-end. Some kind of tutorial might be nice.