This file will grow as we go along. For a short refresher on x86 assembly & 32bit calling convention: tiny-guide-to-x86-assembly.pdf For a longer intro to the archichecture and assembly: solaris-on-x86.pdf, Sections 2.1, 2.3, 3.2, 3.3 for calling conventions and ABI. An excellent summary of x86 memory system: http://duartes.org/gustavo/blog/post/memory-translation-and-segmentation Segments and "privilige rings" (a.k.a. "which bits & where we set to trigger a trap when a piece of code reads/writes data it is not supposed to access"): solaris-on-x86.pdf, Chapter 4, especially 4.1, 4.2. The ultimate reference: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html in particular http://download.intel.com/products/processor/manual/325383.pdf for instruction reference. For example, page 551 for all forms of the MOV instruction, and its pseudocode on page 553, showing which segments are implicitly involved, and where traps/faults will occur. Note the CPL vs DPL checks: they are involved in kernel from userland separation.