- This repository is mainly about the x86 version of the Assembly language.
- Tutorial playlist: Intro to x86 Assembly Language (32-bit x86 Assembly)
- Find Syscalls and which registers to use
man 2 <syscall_name>
can also be used to find the functions definition of the Syscall.
# Use Netwide Assembler to compile assembly code to object file
$ nasm -f elf32 hello-world.asm -o hello-world.o
# Use GNU Linker to link object file and create an ELF (executable)
$ ld -m elf_i386 hello-world.o -o hello-world
# Execute the ELF
$ ./hello-world
- 8-bit
AH
,AL
- 16-bit
AX
(AH:AL
)
- 32-bit
EAX
- 64-bit
RAX
db
orbyte
- One byte
dw
orword
- One word, i.e., two bytes
dd
ordword
- Double word, i.e., four bytes
dq
orqword
- Quadruple word, i.e., eight bytes
file
nm
ldd
objdump
strace
readelf
gdb
gf
- Assembly Language in 100 Seconds
- Intro to x86 Assembly Language (32-bit x86 Assembly)
- The faker's guide to reading (x86) assembly language
- Some Assembly Required
- x86 assembly doesn’t have to be scary (interactive)
- Web in Native Assembly (Linux x86_64)
- Brennan's Guide to Inline Assembly (AT&T vs Intel syntax)
- you can become a GALAXYBRAIN assembly programmers in 10 minutes
- godbolt.org
- Function calling in Assembly (Caller and Callee rules)
- Difference between
.a
,.s
,.S
and.asm
- Find Syscalls and which registers to use
- ASCII Table
- Is it possible to use 32 bits registers/instructions in real mode?
- In x86 what's difference between "test eax,eax" and "cmp eax,0"
- Netwide Assembler (NASM)
- NASM vs GAS