Assembler - Assembler often abbreviated asm, is a program for converting instructions written in low-level assembly code into relocatable machine code and generating along information for the loader.
Compiler - A compiler is a computer program that translates computer code written in one programming language into another language.
MASM - Microsoft Assembler.
TASM - Turbo Assembler.
NASM - Netwide Assembler.
GNU Assembler - The GNU Assembler, commonly known as gas or simply as, its executable name, is the assembler used by the GNU Project.
ISA - An instruction set architecture is an abstract model of a computer.
Nibble - 4 Bits.
Byte - 8 Bits.
MSB - T he most significant bit (MSB, also called the high-order bit) is the bit position in a binary number having the greatest value.
ASCII - American Standard for Information Interchange.
UNICODE - One standard for all of the world.
Registers - Registers are a type of computer memory used to quickly accept, store, and transfer data and instructions that are being used immediately by the CPU.
Flags - The FLAGS register is the status register in Intel x86 microprocessors that contains the current state of the processor.
Memory Address - A memory address is a unique identifier used by a device or CPU for data tracking.
IO Function - The term I/O is used to describe any program, operation or device that transfers data to or from a computer and to or from a peripheral device.
CPU - Central Processing Unit.
ALU - Arithmetic Logic Unit.
FLU - Floating Point Unit.
EAX - 32 Bits, Accumulator and Returns.
AX - low 16 Bits of EAX.
AL - low 8 Bits of AX or EAX.
AH - high 8 bits of AX.
ECX - Counter.
ESP - Extended Stack Pointer.
ESI - Source.
EDI - Destination.
EPB - Extended Base Pointer, Frame pointer (when we use stack).
EDX:EAX - Multiplication and Divide.
IP/EIP - Extended Instruction Pointer.
CF - Carry.
OF - Overflow.
SF - Sign Flag.
ZF - Zero Flag.
AC - Auxiliary Carry.
PF - Parity.
CS - Code Segment.
DS - Data Segment.
SS - Stack Segment.
MUL - Multiply.
MOV - Move.
DIV - Divide.
JMP - Jump Location (Unconditional).
JZ - Conditional Jump.
LOOP - Decrements ecx.
Shifting - shr, Logical Shift, Move all the bits to the left or Right.
Arithmetic Shift/Signed Shift - SHLD/SHRD dest.
Mnemonic - Instruction To be executed.
Operand - A parameter to the instruction.
SAL - Shift Arithmetic Left.
call funcation_Name - Pushes the address of the next instruction onto the stack.
ret - Return from a function.
Sub esp, X - Subtract X bytes from esp.
Add esp, X - Add X bytes to esp.
And esp, 0FFFFFFF0h - To make sure that esp is on an even byte boundary.
Printf - C function, used to print statements.
GEF - GDB Enhanced Features.
Function Prologue - Setup entering a function.
Function Epilogue - To Restore the stack.
Pushad - Save all general purpose registers.
Popad - pop EDI,ESI,EBP,EBX,EDX.
Calling Convention - Assumptions that software makes about how the caller and callee work.
Cdecl - Call Declaration.
Enter 0,0 - Enter a function and create a stack frame.
FADD - Addition.
FSUB - Subtraction.
FMUL - Multiplication.
FDIV - Division.
FCOM - COMPARES SRC and ST0.
FCOMP - COMPARES SRC and ST0 and pops stack.
FCOMPP - Compares ST0 and ST1 and pop stack twice.
FICOM - Compare ST0 and src(int).
FICOMP - Compare ST0 and src(int) and then pop stack.
FIST - Compare ST0 and 0.
FCHS - Changes sign of ST0.
FABS - Absolute value of ST0.
FSQRT - Square root of ST0.
FSCALE - Exponent ST0 = ST0 x 2ST1.
FCOS/FSIN/FPTAN - Floating point cosine/Floating point sin/Floating point tan.
Pipelines - allows multiple instruction to be in the stages of processing.
Branching - Jumping.
Conditional Execution - The Ability to execute the instructions based on flags.
Pointers - Points to a location in memory(RAM).
Arrays - A region of contiguous memory, a consecutive sequence of bytes.
Mov - copies Address.
Lea - does Calculation,but does not load memory.
ARM - Acorn RISC Machine, later Advanced RISC Machine.
CPSR - Current Process Status Register (32 bits).
RO-R15 - R0 Accumulator. R13 is SP(Stack Pointer), R14 is LR(Link Register), R15 is PC(Program Counter).
Banked Registers - Banked Registers are discrete physical registers in the core that are mapped to the available registers depending on the current processor operating mode. Banked Register contents are preserved across operating mode changes.
ABI - Application Binary Interface.
Ldm - Load Multiple.
Stm - Store Multiple.
IA - Increment After.
IB - Increment Before.
DA - Decrement After.
DB - Decrement Before.
VFP - Vector Floating Registers.
Neon - Advanced SIMD for ARM.
FPSCR - Floating Point Status and Control Registers.
VCVT - v convert, Between single-precision and double precision resistors.
SIMD - Single Instruction Multiple Data.
VLD - v load.
VSTR - V store data.
ARM Mode - Instructions in 32 bits wide.
Thumb Mode - Instructions in 16 bits wide.
BLX - BRANCH with Link and exchange.
UAL - Unified Assembler Language.
Conditional Execution - Allows an instruction to be executed only when a condition is met.
Thumb-2 Conditional Execution - Does not have the bits for stand alone conditional instructions.
IT Blocks - I f T hen blocks.
COFF - Common Object File Format.
PE Format - Portable Executable Format.
Union - A union is a value that may have any of several representations or formats within the same position in memory.
Structure (struct) - A struct in the C programming language (and many derivatives) is a composite data type (or record) declaration that defines a physically grouped list of variables under one name in a block of memory, allowing the different variables to be accessed via a single pointer or by the struct declared name which returns the same address.
Malloc - Memory Allocation.
Switch Statements - Allows a programmer to easily choose a block of code to execute
Jump Tables - An array of pointers to program code.
Function Pointer - Points to a function or subroutine.
Inline Assembly - In computer programming, an inline assembler is a feature of some compilers that allows low-level code written in assembly language to be embedded within a program, among code that otherwise has been compiled from a higher-level language such as C or Ada.
GCC - GNU Compiler Collection.
Reverse engineering - It involves finding out how various functions in the code are built, what they do, and how each relates to and interacts with other code functions.
Interrupts - An event that signals to the CPU that something occurred.
SysCall - System Calls, Provides a way to interact with the operating system kernel.
ISR - Interrupt Service Routine/ Interrupt handler.
Sti - Set interrupt Flag.
Cti - Clear interrupt flag.
Fork - create a child process.
Wait - waits for a process to finish.
MMX - MultiMedia eXtension
SSE - Steaming SIMD Extensions
AES-NI - Advanced Encryption Standard New Instructions
Dynamic Linking - refers to the linking that is done during load or run-time and not when the exe is created.
Static Linking - is the result of the linker copying all library routines used in the program into the executable image.
Shared Library - is a file containing object code that several a. out files may use simultaneously while executing.