yeah you can load a os x binary into your windows version of IDA.
for other tools ... your tool has to support mach-o binaries. the rest is simple i386/x86_64 code.
For example I know that http://hte.sourceforge.net/ does support mach-o.
I'm using an OpenBSD machine to reverse native code. My box is installed with HT and radare2. I find radare2 more tractable, as it is capable of disassembling misaligned instructions (and one day I will be writing my analyses in vala/swig).
I mostly look at the output of my own compiled programs and assembly listing from others in academic papers. Such is the life of a PhD student.
Haha luckily we didn't have to implement a printf function for this class. I couldn't imagine trying to make it looking at how it's implemented.
Hopefully you're not trolling. But here's a quick run down.
Exported kernel functions: http://hte.sourceforge.net/doxygenized-0.8.0pre1/htxbeimp_8cc-source.html
Like I stated before everything else is statically/dynamically and is not possible to wrap/hook. CXBX and a few other emulators attempted various symbol detection methods to emulate in this manner, HLE. But ultimately it's not possible to emulate every game in this manner due to some titles usage of dynamically linked inclusion of libraries.
I started out by writing small C programs and disassembling them. Using this technique you can assume there are no obfuscation nasties which would cause an incorrect disassembly. From here you can inspect how high level constructs map to low level constructs.
To disassemble you can use GNU object dump or HT (http://hte.sourceforge.net/). Windows users prefer Ollydbg.
That will get you started on calling convention and addressing modes for sure. Have fun.