This is an organized collection of all the links in the book. You're welcome. Bold links indicate a changed link since publication (Edition 2.0).
- Book website & resources: https://www.prospectpressvt.com/textbooks/Hall-assembly-programming-2-0
- Book repository: https://github.com/brianrhall/Assembly
- Brian’s website: https://www.brianrhall.com
- Kevin’s website: https://www.kevinslonka.com
- https://en.wikibooks.org/wiki/X86_Assembly (Assembly Programming Overview)
- https://en.wikibooks.org/wiki/X86_Disassembly (Assembler and Disassembler Overview)
- https://en.wikipedia.org/wiki/X86-64 (x86_64 Overview)
- https://www.unicode.org
- https://www.unicode.org/charts/PDF/U0000.pdf (ASCII)
- http://devimages.apple.com/llvm/videos/LLVM_Assembler_Infrastructure.mov (LLVM-MC Overview)
- https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
- https://developer.amd.com/resources/developer-guides-manuals/
- https://sourceware.org/binutils/docs/as/ (GAS Reference)
- https://docs.microsoft.com/en-us/cpp/assembler/masm/microsoft-macro-assembler-reference (MASM Reference)
- https://www.nasm.us/doc/nasmdoc0.html (NASM Reference)
- https://sourceware.org/binutils/docs/as/ (GAS Reference)
- https://docs.microsoft.com/en-us/cpp/assembler/masm/microsoft-macro-assembler-reference/ (MASM Reference)
- https://www.nasm.us/doc/nasmdoc0.html (NASM Reference)
- https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html (Volume 1, Chapter 5 Instruction Set Summary, Section 5.1)
- https://www.felixcloutier.com/x86/
- https://en.wikipedia.org/wiki/X86_instruction_listings
- https://www.nasm.us/doc/nasmdocb.html
- https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/MachOTopics/1-Articles/x86_64_code.html
- https://en.wikipedia.org/wiki/Calling_convention
- https://en.wikipedia.org/wiki/X86_calling_conventions
- https://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions
- https://wiki.osdev.org/Calling_Conventions
- https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/LowLevelABI/000-Introduction/introduction.html#/apple_ref/doc/uid/TP40002521 (OS X ABI Function Call Guide)
- https://docs.microsoft.com/en-us/cpp/cpp/calling-conventions (x86 Calling Conventions)
- https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention (x64 Calling Convention)
- https://refspecs.linuxfoundation.org/elf/x86_64-abi-0.99.pdf (AMD64 ABI)
- https://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)
- https://www.felixcloutier.com/x86/nop (NOP reference)
- https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html (Volume 1, Chapter 5 Instruction Set Summary, Section 5.1)
- https://nasm.us/doc/nasmdoc5.html#section-5.9 (NASM struct)
- https://docs.microsoft.com/en-us/cpp/assembler/masm/struct-masm (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
- https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-soft-ware-developer-vol-1-manual.pdf
- https://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)
- https://babbage.cs.qc.cuny.edu/IEEE-754/ (IEEE 754 Analysis)
- https://docs.microsoft.com/en-us/cpp/assembler/inline/inline-assembler (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)
- https://www.ibm.com/developerworks/library/l-ia/ (Inline Assembly for x86 in Linux)
- https://sourceware.org/binutils/docs/as/Macro.html (GAS Macros)
- https://docs.microsoft.com/en-us/cpp/assembler/masm/macro (MASM Macros)
- https://www.nasm.us/doc/nasmdoc4.html (NASM Macros)
- https://docs.microsoft.com/en-us/cpp/intrinsics/compiler-intrinsics-and-assembly-language (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
- https://bruceblinn.com/linuxinfo/MemoryBarriers.html
- https://yarchive.net/comp/linux/memory_barriers.html
- https://docs.microsoft.com/en-us/cpp/intrinsics/readwritebarrier
- 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
- https://wiki.osdev.org/GDT_Tutorial
- https://en.wikipedia.org/wiki/Interrupt
- https://wiki.osdev.org/Interrupt_Descriptor_Table
- https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html (Intel Developer Manuals)
- https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI (AMD64 ABI)
- https://docs.microsoft.com/en-us/windows/win32/apiindex/api-index-portal (Windows API Index)
- https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
- https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI
- https://docs.microsoft.com/en-us/windows/win32/apiindex/api-index-portal
- https://opensource.apple.com/source/xnu/xnu-3248.50.21/bsd/kern/syscalls.master
- https://opensource.apple.com/source/xnu/xnu-3248.50.21/osfmk/mach/i386/syscall_sw.h
- https://github.com/dyjakan/osx-syscalls-list
- https://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/x86-system-calls.html
- https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md
- https://filippo.io/linux-syscall-table/
- DOS API: https://en.wikipedia.org/wiki/MS-DOS_API
- Native API 32-bit: https://j00ru.vexillium.org/syscalls/nt/32/
- Native API 64-bit: https://j00ru.vexillium.org/syscalls/nt/64/
- Linux Inside – Interrupts: https://0xax.gitbooks.io/linux-insides/Interrupts/
- Linux Kernel Labs – Interrupts: https://linux-kernel-labs.github.io/refs/heads/master/lectures/interrupts.html
- Linux Inside – System Calls: https://0xax.gitbooks.io/linux-insides/SysCall/
- Linux Kernel Labs – System Calls: https://linux-kernel-labs.github.io/refs/heads/master/lectures/syscalls.html
- The Definitive Guide to Linux System Calls: https://blog.packagecloud.io/eng/2016/04/05/the-definitive-guide-to-linux-system-calls/
- Virtual Dynamic Shared Object (VDSO) man page: https://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): https://articles.manugarg.com/systemcallinlinux2_6.html
- Nt vs. Zw – Clearing Confusion on the Native API: https://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/architectures (ARM Developer and Reference Manuals)
- https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf (ATmega Datasheet)
- https://riscv.org/specifications/ (RISC-V Specication)
- https://github.com/riscv (RISC-V GitHub)
- https://www.kernel.org/doc/Documentation/s390/Debugging390.txt (s/ and z/Architecture)
- https://www.ibm.com/developerworks/library/l-basics-inline-assembly/index.html (z/Arch Assembly)
- https://www.ibm.com/quantum-computing/learn/what-is-quantum-computing (What Is Quantum Computing)
- https://www.arduino.cc/en/Main/ArduinoBoardDue
- https://www.arduino.cc/en/Main/ArduinoBoardUno
- https://riscv.org/
- https://www.openpowerfoundation.org
- 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: https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
- AMD: https://developer.amd.com/resources/developer-guides-manuals/
- Agner Fog: https://www.agner.org/optimize/#manuals
- https://www.felixcloutier.com/x86/
- https://en.wikipedia.org/wiki/X86_instruction_listings
- https://www.nasm.us/doc/nasmdocb.html
- https://refspecs.linuxfoundation.org/elf/x86_64-abi-0.99.pdf
- https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/LowLevelABI/000-Introduction/introduction.html
- https://sourceware.org/binutils/docs/as/ (GAS)
- https://www.nasm.us/doc/ (NASM)
- http://www.nasm.us/docs.php (NASM)
- https://docs.microsoft.com/en-us/cpp/assembler/masm/microsoft-macro-assembler-reference (MASM)
- https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/Assembler/000-Introduction/introduction.html (outdated but still informational)
- NASM manual (Chapter 2): https://www.nasm.us/doc/nasmdoc2.html
- ld man page: https://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://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs
- Building on the Command Line: https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line
- ml and ml64 Command-Line Reference: https://docs.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference
- Setting Path and Environment Variables for Command-Line Builds: https://docs.microsoft.com/en-us/cpp/build/setting-the-path-and-environment-variables-for-command-line-builds
- Adding a Path environment variable: https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14)
- 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: https://www.amd.com/system/files/TechDocs/25481.pdf
- Microsoft __cpuid(): https://docs.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex
- https://en.wikipedia.org/wiki/CPUID (the best resource for a quick visual of feature bits)
- https://wiki.osdev.org/CPUID
- https://software.intel.com/sites/landingpage/IntrinsicsGuide/ (an amazing interactive site by Intel)
- https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/intrinsics/details-about-intrinsics.html (Intel Intrinsics Reference)
- https://docs.microsoft.com/en-us/cpp/intrinsics/compiler-intrinsics (Microsoft Compiler Intrinsics)