Questions about this topic? Sign up to ask in the talk tab.
Difference between revisions of "Assembly"
From NetSec
RockyMackay (Talk | contribs) (→Introduction) |
|||
Line 1: | Line 1: | ||
{{inprog}}{{prereq|[[bitwise math]]}} | {{inprog}}{{prereq|[[bitwise math]]}} | ||
== Introduction == | == Introduction == | ||
− | * assembler | + | * assembler - An assembler is a program that compiles human-readable operations into instructions interpreted by the processor |
− | * linker | + | * linker - A linker is a program that combines the compiled assembly objects into a binary. 'ld' is the standard linker on Linux platforms. |
+ | |||
+ | Compilers such as GCC/CC do both operations dynamically. | ||
* Assemble-time: Assembly & operands -> Opcode Sequence | * Assemble-time: Assembly & operands -> Opcode Sequence |
Revision as of 22:39, 20 May 2012
Assembly requires a basic understanding of bitwise math |
Contents
Introduction
- assembler - An assembler is a program that compiles human-readable operations into instructions interpreted by the processor
- linker - A linker is a program that combines the compiled assembly objects into a binary. 'ld' is the standard linker on Linux platforms.
Compilers such as GCC/CC do both operations dynamically.
- Assemble-time: Assembly & operands -> Opcode Sequence
- Link-time: Flat binary of opcode sequence -> executable file format for OS
- Runtime: Opcode Sequence -> hardware gates (may interact with ram etc)
Binary
- counting
- endianness
- nybble
- byte
- word
- dword
- qword
Number handling
- signed
- unsigned
- 2's compliment
Data storage
- register
- pointer
- sub-register
- cpu flag registers
- architecture-specific registers
Memory Addressing
- stack pointer
- instruction pointer
- base pointer
- addressing mode
- index
Instructions
Syntaxes
- Intel (dest, src)
- ATT (src, dest)
Data manipulation basic primitives
- mov
- push
- pop
Basic arithmetic
- add
- sub
- div
- mul
Bitwise mathematics operators
- and
- not
- or
- xor
Shifts and rotations
- shl
- shr
- rol
- ror
Control flow operators
- cmp
- jmp
- call
- ret
Taking it further
- kernel interrupt
- architecture
- operating system