Friday, 24 April 2020

Remember the Little-Endianness


How to remeber "little-endianness" easily? Remember as "three L":

Little-Endianness → Least-Significant-Byte at the Lowest-Address

So for x86-64, if we have an int i = 0x01020304 on the stack, it looks as follows:

         USERLAND
-------------------------
|xx xx xx xx xx xx xx xx| 0x0000 7fff ffff ffff
|xx xx xx xx xx xx xx xx|
|01 02 03 04 xx xx xx xx| <-((int*)&i)-1
|xx xx xx xx xx xx xx xx|
|xx xx xx xx xx xx xx xx|
------------------------- <-$rsp
|                       |
|                       |
          ......
|                       |
|                       | 0x0000 0000 0000 0000
-------------------------