Assembly

Some quick cheatsheets and tutorials:

This *still makes my brain explode.

  • mov dest, src is called Intel syntax. (e.g. mov eax, 123)
  • mov src, dest is called AT&T syntax. (e.g. mov $123, %eax)

UNIX assemblers including the GNU assembler uses AT&T syntax, all other known x86 assemblers Intel syntax. You can read up on the differences on wikipedia

.data
var1 BYTE 10h,
.code
mov al,var1 ; AL = 10h
mov al,[var1] ; AL = 10h

Stack

You can start by reading Stack explained. This is an example of a function and a stack frame after invoking that function.

/* Example of function with many parameters */
long func(long a, long b, long c, long d,
            long e, long f, long g, long h)
{
    long xx = a * b * c * d * e * f * g * h;
    long yy = a + b + c + d + e + f + g + h;
    long zz = utilfunc(xx, yy, xx % yy);
    return zz + 20;
}

Stack frame after calling func

https://en.wikipedia.org/wiki/Win32_Thread_Information_Block#Accessing_the_TIB

Operation Precedence

raise NotImplementedError

Information on Executables

raise NotImplementedError