This is an organized collection of all the links in the book. You're welcome. Bold links indicate a changed link since publication (Edition 1.0).
- Book website: http://www.prospectpressvt.com/titles/hall-assembly-programming/
- Book repository: https://github.com/brianrhall/Assembly
- Instructor resources: http://prospectpressvt.com/titles/hall-assembly-programming/instructor-resources/
- Student resources: http://prospectpressvt.com/titles/hall-assembly-programming/student-resources/
- Brian’s website: http://www.brianrhall.net
- Kevin’s website: http://www.kevinslonka.com
- https://en.wikibooks.org/wiki/X86_Assembly (Assembly Programming Overview)
- https://en.wikibooks.org/wiki/X86_Disassembly (Assembler and Disassembler Overview)
- http://www.unicode.org
- http://www.unicode.org/charts/PDF/U0000.pdf (ASCII)
- http://devimages.apple.com/llvm/videos/LLVM_Assembler_Infrastructure.mov (LLVM-MC Overview)
- Video 1.1: Welcome (https://youtu.be/HBwgXY88hyc)
- Video 1.2: Signing Integers (https://youtu.be/vHijiZMbj9E)
- Video 1.3: A 3-bit Computer Example (https://youtu.be/gYczcmDywag)
- http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
- https://developer.amd.com/resources/developer-guides-manuals/
- https://sourceware.org/binutils/docs/as/ (GAS Reference)
- https://msdn.microsoft.com/en-us/library/afzk3475.aspx (MASM Reference)
- http://www.nasm.us/doc/nasmdoc0.html (NASM Reference)
- https://sourceware.org/binutils/docs/as/ (GAS Reference)
- https://msdn.microsoft.com/en-us/library/afzk3475.aspx (MASM Reference)
- http://www.nasm.us/doc/nasmdoc0.html (NASM Reference)
- http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html (Volume 1, Chapter 5 Instruction Set Summary, Section 5.1)
- http://www.felixcloutier.com/x86/
- http://x86.renejeschke.de
- https://en.wikipedia.org/wiki/X86_instruction_listings
- http://www.nasm.us/doc/nasmdocb.html
- http://en.wikipedia.org/wiki/Calling_convention
- http://en.wikipedia.org/wiki/X86_calling_conventions
- http://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions
- http://wiki.osdev.org/Calling_Conventions
- https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/LowLevelABI/000-Introduction/introduction.html (OS X ABI Function Call Guide)
- https://msdn.microsoft.com/en-us/library/k2b2ssfy.aspx (x86 Calling Conventions)
- https://msdn.microsoft.com/en-us/library/ms235286.aspx (x64 Calling Convention)
- http://refspecs.linuxfoundation.org/elf/x86-64-abi-0.99.pdf (AMD64 ABI)
- http://www.agner.org/optimize/calling_conventions.pdf (Calling Conventions)
- http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf (Intel 64 and IA-32 Architectures Optimization Reference Manual)
- http://www.felixcloutier.com/x86/NOP.html (NOP reference)
- http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html (Volume 1, Chapter 5 Instruction Set Summary, Section 5.1)
- http://www.nasm.us/doc/nasmdoc4.html#section-4.11.10 (NASM struct)
- https://msdn.microsoft.com/en-us/library/tydf8khh.aspx (MASM struct)
- https://sourceware.org/binutils/docs/as/Struct.html#Struct (GAS struct)
- https://en.wikipedia.org/wiki/X87
- https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions
- https://en.wikipedia.org/wiki/X86_instruction_listings#SSE_instructions
- https://en.wikipedia.org/wiki/Advanced_Vector_Extensions
- http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-soft-ware-developer-vol-1-manual.pdf
- http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-soft-ware-developer-instruction-set-reference-manual-325383.pdf
- https://software.intel.com/en-us/articles/introduction-to-intel-advanced-vector-extensions
- https://docs.oracle.com/cd/E19957-01/806-3568/ncg_math.html (IEEE Arithmetic)
- http://babbage.cs.qc.cuny.edu/IEEE-754/ (IEEE 754 Analysis)
- https://msdn.microsoft.com/en-us/library/4ks26t93.aspx (Microsoft Inline Assembler)
- https://gcc.gnu.org/onlinedocs/gcc/Using-Assembly-Language-with-C.html (Clang/GCC)
- https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html (x86 Machine Constraints)
- http://www.ibm.com/developerworks/library/l-ia/ (Inline Assembly for x86 in Linux)
- https://sourceware.org/binutils/docs/as/Macro.html (GAS Macros)
- https://msdn.microsoft.com/en-us/library/d4chx59e.aspx (MASM Macros)
- http://www.nasm.us/doc/nasmdoc4.html (NASM Macros)
- https://msdn.microsoft.com/en-us/library/wbk4z78b.aspx (Instrinsics and Inline Assembly)
- https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html (Extended ASM)
- https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Volatile
- https://brooker.co.za/blog/2013/01/06/volatile.html
- https://en.wikipedia.org/wiki/Memory_barrier
- https://www.kernel.org/doc/Documentation/memory-barriers.txt
- http://bruceblinn.com/linuxinfo/MemoryBarriers.html
- http://yarchive.net/comp/linux/memory_barriers.html
- https://msdn.microsoft.com/en-us/library/f20w0x5e(v=vs.140).aspx
- https://en.wikipedia.org/wiki/X86#Operating_modes
- https://en.wikipedia.org/wiki/X86_memory_segmentation
- https://en.wikipedia.org/wiki/System_call
- https://en.wikipedia.org/wiki/Global_Descriptor_Table
- http://wiki.osdev.org/GDT_Tutorial
- https://en.wikipedia.org/wiki/Interrupt
- http://wiki.osdev.org/Interrupt_Descriptor_Table
- http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html (Intel Developer Manuals)
- https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI (AMD64 ABI)
- https://msdn.microsoft.com/library/windows/desktop/hh920508.aspx (Windows API Index)
- http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
- https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI
- https://msdn.microsoft.com/library/windows/desktop/hh920508.aspx
- http://opensource.apple.com/source/xnu/xnu-3248.50.21/bsd/kern/syscalls.master
- http://opensource.apple.com/source/xnu/xnu-3248.50.21/osfmk/mach/i386/syscall_sw.h
- https://sigsegv.pl/osx-bsd-syscalls/
- https://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/x86-system-calls.html
- http://lxr.linux.no/linux+v4.6.4/arch/x86/entry/syscalls/
- http://syscalls.kernelgrok.com (32-bit only)
- http://www.escapin.it/assembler/asm_syscall.pdf (32-bit only)
- DOS API: https://en.wikipedia.org/wiki/MS-DOS_API
- Porting DOS calls to WinAPI: https://msdn.microsoft.com/en-us/library/aa984837(v=vs.71).aspx
- Native API 32-bit: http://j00ru.vexillium.org/ntapi/
- Native API 64-bit: http://j00ru.vexillium.org/ntapi_64/
- Linux Inside – Interrupts: https://0xax.gitbooks.io/linux-insides/content/interrupts/
- Linux Inside – System Calls: https://0xax.gitbooks.io/linux-insides/content/SysCall/
- The Definitive Guide to Linux System Calls: http://blog.packagecloud.io/eng/2016/04/05/the-definitive-guide-to-linux-system-calls/
- Virtual Dynamic Shared Object (VDSO) man page: http://man7.org/linux/man-pages/man7/vdso.7.html
- LKML.ORG thread on merging system call paths in Linux: https://lkml.org/lkml/2015/9/1/562
- LKML.ORG thread on sysenter and performance in Linux: https://lkml.org/lkml/2002/12/9/13, https://lkml.org/lkml/2002/12/18/218
- Sysenter Based System Call Mechanism in Linux 2.6 (outdated, but useful explanation): http://articles.manugarg.com/systemcallinlinux2_6.html
- Nt vs. Zw – Clearing Confusion on the Native API: http://www.osronline.com/article.cfm?id=257
- https://en.wikipedia.org/wiki/Category:Instruction_set_architectures
- https://en.wikipedia.org/wiki/ARM_architecture
- https://en.wikipedia.org/wiki/Atmel_AVR
- https://en.wikipedia.org/wiki/RISC-V
- https://en.wikipedia.org/wiki/Z/Architecture
- https://en.wikipedia.org/wiki/Quantum_computing
- https://developer.arm.com/products/architecture (ARM Developer)
- http://infocenter.arm.com/help/index.jsp (ARM Reference Manuals)
- http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf (ATmega Datasheet)
- https://riscv.org/specifications/ (RISC-V Speci cation)
- https://github.com/riscv (RISC-V GitHub)
- https://www.kernel.org/doc/Documentation/s390/Debugging390.txt (s/ and z/Architecture)
- http://www.ibm.com/developerworks/library/l-basics-inline-assembly/index.html (z/Arch Assembly)
- http://www.cs.ucsb.edu/~chong/QC/ (Quantum Computing Overview)
- https://www.arduino.cc/en/Main/ArduinoBoardDue
- https://www.arduino.cc/en/Main/ArduinoBoardUno
- https://riscv.org/
- https://riscv.org/risc-v-foundation/
- https://github.com/riscv/riscv-tests
- https://www.kernel.org/doc/Documentation/s390/Debugging390.txt
- http://www.nature.com/nature/journal/v528/n7583/full/nature16454.html
- https://en.wikipedia.org/wiki/Electric_current
- https://en.wikipedia.org/wiki/Voltage
- https://en.wikipedia.org/wiki/Electric_power
- https://en.wikipedia.org/wiki/Electrical_resistance_and_conductance
- Intel: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
- AMD: https://developer.amd.com/resources/developer-guides-manuals/
- Agner Fog: http://www.agner.org/optimize/#manuals
- http://www.felixcloutier.com/x86/
- http://x86.renejeschke.de
- https://en.wikipedia.org/wiki/X86_instruction_listings
- http://www.nasm.us/doc/nasmdocb.html
- http://refspecs.linuxfoundation.org/elf/x86-64-abi-0.99.pdf
- https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/LowLevelABI/000-Introduction/introduction.html
- https://sourceware.org/binutils/docs/as/ (GAS)
- http://www.nasm.us/doc/ (NASM)
- http://www.nasm.us/docs.php (NASM)
- https://msdn.microsoft.com/en-us/library/afzk3475.aspx (MASM)
- https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/Assembler/000-Introduction/introduction.html (outdated but still informational)
- NASM manual (Chapter 2): http://www.nasm.us/doc/nasmdoc2.html
- ld man page: http://linux.die.net/man/1/ld
- GDB manual: https://sourceware.org/gdb/current/onlinedocs/gdb/
- GDB command index: https://sourceware.org/gdb/current/onlinedocs/gdb/Command-and-Variable-Index.html#Command-and-Variable-Index
- Developer Command Prompt for Visual Studio: https://msdn.microsoft.com/en-us/library/ms229859.aspx
- Building on the Command Line: https://msdn.microsoft.com/en-us/library/f35ctcxw.aspx
- ml and ml64 Command-Line Reference: https://msdn.microsoft.com/en-us/library/s0ksfwcf.aspx
- C++ name mangling: https://en.wikipedia.org/wiki/Name_mangling
- AMD Architecture Programmer’s Manual: https://developer.amd.com/resources/developer-guides-manuals/
- AMD CPUID Specification: http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/25481.pdf
- Microsoft __cpuid(): https://msdn.microsoft.com/en-us/library/hskdteyh.aspx
- https://en.wikipedia.org/wiki/CPUID (the best resource for a quick visual of feature bits)
- http://wiki.osdev.org/CPUID
- https://software.intel.com/sites/landingpage/IntrinsicsGuide/ (an amazing interactive site by Intel)
- https://software.intel.com/en-us/node/523351 (Intel Intrinsics Reference)
- https://msdn.microsoft.com/en-us/library/26td21ds.aspx (Microsoft Compiler Intrinsics)