Questions about this topic? Sign up to ask in the talk tab.

Assembly

From NetSec
Revision as of 00:44, 21 May 2012 by AmandaSchreiber (Talk | contribs) (Binary)

Jump to: navigation, search
RPU0j.png
Assembly is currently in-progress. You are viewing an entry that is unfinished.
Assembly requires a basic understanding of bitwise math


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 - An uncommon unit of memory equivalent to 4 bits.
  • byte - A byte is a unit of memory equivalent to 8 bits.
  • 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