x86 Assembly Guide: This guide describes the basics of 32-bit x86 assembly language programming, covering a small but useful subset of the available instructions and assembler directives. There are several different assembly languages for generating x86 machine code. The one we will use ... is the Microsoft Macro Assembler (MASM) assembler. MASM uses the standard Intel syntax for writing x86 assembly code.
A fundamental introduction to x86 assembly prorgamming - Project Nayuki (HTML)
"The faker's guide to reading (x86) assembly language"
"The Art of Assembly Language", in several editions:
"How to read assembly language"
Collection of ASM resources (source to some of the above; this page has non-x86 resources on it, as well, which I'd like to extract and put into other research notes pages)
"Metaprogramming in Flat Assembler": Demonstrating FASM (flat assembler) macros, which are pretty powerful, it seems.
Assembly tutorial for DOS also available in a full list at CodeProject: The Intel Assembly Manual
Linux Assembly HOWTO | List of Linux/i386 system calls | Another list of Linux/i386 system calls | Linux Kernel Internals | Using the GNU Assembler
Assembler relaxation
http://eli.thegreenplace.net/2013/01/03/assembler-relaxation
Displaying all argv in x64 assembly
http://eli.thegreenplace.net/2013/07/24/displaying-all-argv-in-x64-assembly
Gentle Introduction to x86-64 Assembly
http://www.x86-64.org/documentation/assembly.html
Introduction to x64 Assembly
https://software.intel.com/en-us/articles/introduction-to-x64-assembly
Processor Architecture
https://msdn.microsoft.com/en-us/library/windows/hardware/ff553442%28v=vs.85%29.aspx
x86-32 and x86-64: Architecture, Instructions, Annotated Disassembly
Redundancy of x86 Machine Code
http://www.strchr.com/machine_code_redundancy
Stack frame layout on x86-64
http://eli.thegreenplace.net/2011/09/06/stack-frame-layout-on-x86-64
The x86 architecture is the weirdo
http://blogs.msdn.com/b/oldnewthing/archive/2004/09/14/229387.aspx
Trivia Questions for X86 Nerds
http://www.msreverseengineering.com/blog/2015/6/9/x86-trivia-for-nerds
Discussions:
https://www.reddit.com/r/ReverseEngineering/comments/39gbxc/trivia_questions_for_x86_nerds/
https://twitter.com/rolfrolles/status/608789071645691904
Understanding the x64 code models
http://eli.thegreenplace.net/2012/01/03/understanding-the-x64-code-models
Where the top of the stack is on x86
http://eli.thegreenplace.net/2011/02/04/where-the-top-of-the-stack-is-on-x86
Windows x64 ABI
Part 1: Intro to the Windows x64 calling convention
http://www.gamasutra.com/view/news/171088/x64_ABI_Intro_to_the_Windows_x64_calling_convention.php
Part 2: Stack frames
http://www.gamasutra.com/view/news/178446/Indepth_Windows_x64_ABI_Stack_frames.php
NASM Assembly Language Tutorials - asmtutor.com
http://asmtutor.com/
Introductory Intel x86: Architecture, Assembly, Applications, & Alliteration
http://opensecuritytraining.info/IntroX86.html
YouTube: https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0
Intermediate Intel x86: Architecture, Assembly, Applications, & Alliteration
http://opensecuritytraining.info/IntermediateX86.html
YouTube: https://www.youtube.com/playlist?list=PL8F8D45D6C1FFD177
Introduction To Reverse Engineering Software
http://opensecuritytraining.info/IntroductionToReverseEngineering.html
YouTube: https://www.youtube.com/playlist?list=PL416CEDF4A931DB0D
Learning assembly for linux-x64
https://github.com/0xAX/asm
https://0xax.github.io/categories/assembly/
Assembly Language (x86) Resources
http://grail.cba.csuohio.edu/~somos/asmx86.html
Useful assembly links
http://www.agner.org/optimize/#links
Agner Fog: Software optimization resources
http://www.agner.org/optimize/
1. Optimizing software in C++: An optimization guide for Windows, Linux and Mac platforms
http://www.agner.org/optimize/optimizing_cpp.pdf
2. Optimizing subroutines in assembly language: An optimization guide for x86 platforms
http://www.agner.org/optimize/optimizing_assembly.pdf
3. The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers
http://www.agner.org/optimize/microarchitecture.pdf
4. Instruction tables: Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs
http://www.agner.org/optimize/instruction_tables.pdf
5. Calling conventions for different C++ compilers and operating systems
http://www.agner.org/optimize/calling_conventions.pdf
AMD64 Application Binary Interface (ABI)
http://www.x86-64.org/documentation.html
http://www.x86-64.org/documentation_folder/abi.pdf
Assembly Optimization Tips
http://mark.masmcode.com/
Assembler x86 (FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4, AVX, AVX2, AVX512)
http://wm.ite.pl/articles/#assembler-x86-fpu-mmx-sse-sse2-sse3-ssse3-sse4-avx-avx2-avx512-new
Brennan's Guide to Inline Assembly
http://www.delorie.com/djgpp/doc/brennan/brennan_att_inline_djgpp.html
AT&T/UNIX syntax <-> Intel syntax
Chess Programming Wiki - Hardware: x86-64
https://chessprogramming.wikispaces.com/x86-64
CPU: Intel® 64 and IA-32 Architectures Software Developer Manuals
https://www-ssl.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
CPU: Developer Guides, Manuals & ISA Documents
http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/
GCC-Inline-Assembly-HOWTO
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
Instruction latencies and throughput for AMD and Intel x86 processors
https://gmplib.org/~tege/x86-timing.pdf
Inline assembly for x86 in Linux
http://www.ibm.com/developerworks/linux/library/l-ia/
Inline assembly (linux-insides)
https://0xax.gitbooks.io/linux-insides/content/Theory/asm.html
Intel Intrinsics Guide
https://software.intel.com/sites/landingpage/IntrinsicsGuide/
Linux Assembly HOWTO
http://asm.sourceforge.net/howto.html
OS Development Wiki
http://wiki.osdev.org/
sandpile.org -- "The world's leading source for technical x86 processor information"
http://www.sandpile.org/
Stack Overflow: 'x86' tag wiki
https://stackoverflow.com/tags/x86/info
Stack Overflow: Documentation - Intel x86 Assembly Language & Microarchitecture
http://stackoverflow.com/documentation/x86/topics
The Minimal 80x86 Instruction Set
http://www.plantation-productions.com/Webster/www.writegreatcode.com/Vol2/wgc2_OA.pdf
Appendix A of Write Great Code, Volume 2: https://www.nostarch.com/greatcode2.htm
The Netwide Assembler: NASM
Chapter 11: Writing 64-bit Code (Unix, Win64)
http://www.nasm.us/xdoc/2.11.09rc1/html/nasmdo11.html
Links to the latest versions: http://www.nasm.us/docs.php
Wikipedia: x86 assembly topics
https://en.wikipedia.org/wiki/Template:X86_assembly_topics
x86 Encoding Cheat Sheet
https://www.akkadia.org/drepper/x86-opcode-structure.pdf
x86 Instruction Set Reference
http://felixcloutier.com/x86/
https://github.com/zneak/x86doc
x86 intrinsics cheat sheet
A cheat sheet containing most x86 intrinsics, like SSE and AVX intrinsics, grouped in an intuitive fashion
http://www3.in.tum.de/~finis/
http://www3.in.tum.de/~finis/x86-intrin-cheatsheet-v2.2.pdf
x86, x64 Instruction Latency, Memory Latency and CPUID dumps
http://users.atw.hu/instlatx64/
x86_64 NASM Assembly Quick Reference ("Cheat Sheet")
https://www.cs.uaf.edu/2010/fall/cs301/support/x86_64/index.html
X86-64 Instruction Encoding
http://wiki.osdev.org/X86-64_Instruction_Encoding
X86 Opcode and Instruction Reference
http://ref.x86asm.net/
x86 Opcode Structure and Instruction Overview
http://net.cs.uni-bonn.de/fileadmin/user_upload/plohmann/x86_opcode_structure_and_instruction_overview.pdf
x86 oddities
http://x86.corkami.com
Last modified 02 October 2024