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

Assembly

From NetSec
Revision as of 02:04, 21 May 2012 by AmandaSchreiber (Talk | contribs) (Number handling)

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 - Signed values are required to represent negative numbers. Most languages by default assume values are signed. The range of numbers it can assign extends from -1 downwards, depending on the data type.
  • unsigned - Despite not being able to assign negative numbers, unsigned values are particularly advantageous for positive ranges. The memory that would have been assigned to the negative range is instead added to the positive range, providing twice as many positive numbers.
  • 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