Random code snippets I use to learn x86_64 assembly language
These are instructions for compiling and running on a Linux x86_64 machine
- Install
nasm
using your packet manager (e.g.pacman
,apt
, etc.) - Compile object:
nasm -f elf64 -o filename.o filename.s
-filename.s
is the input file,filename.o
will be the generated object file - Link object to executable:
ld filename.o -o execname
- Run:
./execname
- hello.s - Simple "Hello, world!" script
- counter.s - Counts from 0 to 9 and prints to stdout. First use of multiple calls and loops
- fibonacci.s - Prints Fibonacci numbers from 0 to 10000. Using functions, macros and constants
Compared to high level languages, Assembly languages seem to have bits and pieces of knowledge very scattered around the web. I haven't found (so far) a very comprehensive learning support, but here are some helpful links I've come across:
- NASM - The most common x86_64 Assembly compiler for Linux
- NASM docs
- x86_64 registers and instructions
- Linux System Calls for x86_64
- Flags registers
- NASM Assembly Programming
- Kupala Assembly YT Series - great series of Youtube videos covering the basics
- Just Enough Assembly for Compiler Explorer - another good introduction video
- NASM Assembly Tutorials