Skip to content

Latest commit

 

History

History
597 lines (487 loc) · 25.5 KB

assembly.x86.md

File metadata and controls

597 lines (487 loc) · 25.5 KB

C++ links: x86 Assembly

See also: Computer Architecture -- recommended background (which makes the following significantly more approachable) includes an undergraduate-level course.

Note: The main focus is on the 64-bit variant (x86-64) -- thus, primarily up-to-date materials (i.e., 64-bit, AVX) are preferred.


Articles

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

Books

32-bit

Communities

alt.lang.asm https://groups.google.com/d/forum/alt.lang.asm

comp.lang.asm.x86 https://groups.google.com/d/forum/comp.lang.asm.x86

flat assembler: Message board for the users of flat assembler. http://board.flatassembler.net/

x86 Assembly Language FAQ Supporting the alt.lang.asm and comp.lang.asm.x86 Newsgroups http://www.fysnet.net/faq/

/r/asm - where every byte counts https://www.reddit.com/r/asm

##asm, Freenode IRC network http://goo.gl/vZ4xwd

CS270 x86 Assembly Blog http://cs270assembly.tumblr.com/

Courses

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/

Links

Assembly Language (x86) Resources http://grail.cba.csuohio.edu/~somos/asmx86.html

Useful assembly links http://www.agner.org/optimize/#links

Performance

  • Precise Event Sampling on AMD vs Intel: Quantitative and Qualitative Comparison

References

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://www.intel.com/content/www/us/en/docs/intrinsics-guide/

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

x86-cpuid.org: A machine-readable CPUID data repository and code generator
https://x86-cpuid.org/
https://gitlab.com/x86-cpuid.org/x86-cpuid-db

OS-specific

Windows

Slides

Software

Assemblers

Assemblers - https://en.wikipedia.org/wiki/Comparison_of_assemblers#x86_assemblers

Disassemblers

Network


Videos

Tutorials

2021

2019

2018

2017

2016

2015

2014

2013

2012

2011