x86 and x86-64 use little-endian Endianness in x86/x86_64 Memory: the least-significant byte of a multi-byte value is stored at the lowest memory address.

Reading a value from a hex dump

If memory holds a 32-bit integer as:

a8 00 00 00

the value is reconstructed by placing the first byte in the least-significant position:

0x000000a8  =  168

Another example — a pointer stored as:

3c f7 df 22

is:

0x22dff73c

Pointers are integers

A pointer is just an address stored as an integer, so it follows the same little-endian rule. On x86-64, pointers are 64 bits (8 bytes); on x86, they are 32 bits (4 bytes).

Why memory dumps look "backwards"

When humans write 0x12345678, we write it most-significant digit first. Memory stores it as 78 56 34 12 on little-endian machines. The written form is big-endian notation; the memory layout is little-endian.

Quick rule

To read a little-endian value: take the bytes left-to-right from low address to high address, then write them right-to-left when forming the number.