Alright, lets talk about endianness. So, what exactly is this.. endianness? Its basically an order in which your computer orders bytes in a bigger data type, need explanation? Letme explain it the easy way. First, we will define an int32 variable, and 32 bits divided by 8(because byte, aka the thing preety much all computers use now uses 8bit as their minimum), which is equal to 4bytes, meaning our variable takes up that much in memory. Now, lets say we will set the variables value to 20. Today, I will propably be using a little hex(base16), so the hex value of 20 is 0x14(0x being prefix for any hexidecimal number[hex = 6, i, decimal = 10... 10 + 6 = base16]). So, the integer is made of 3 bytes containing 0x00 and one byte containing 0x14. The most common endianness types are little endian and... (please no)big endian. This basically means that eighter the biggest or smallest byte is at the end of the byte array. So in little endian the value would be 0x00000014, but in big endian it would be 0x14000000. Which one to use? Well that depends. For example some lower level platforms use big endian, but by far most of modern platforms use little endian. This is where it gets weird tho. Lets write a simple program that uses (propably)big endian and we will try 4 of the basics data types, with each type having eighter of 1, 2, 4 and 8 bytes. [bits 32] db 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF dw 0x0123, 0x4567, 0x89AB, 0xCDEF dd 0x01234567, 0x89ABCDEF dq 0x0123456789ABCDEF d[type] is basically a command that writes memory, and is commonly used for constants but can also be used to define non-constant values. Also, its good to note I am using 32bit system here, as it will propably be important later. So now, whats the hex output of this program? You can simply use program hexdump to do so(on linux), but here it is: 0000000: 0123 4567 89ab cdef 0000008: 2301 6745 ab89 efcd 0000010: 6745 2301 efcd ab89 0000018: efcd ab89 6745 2301 Does this make sence? Well, yes actually, assuming we use big endian. The db works just fine, since we are defining one byte after eachother so theres not really an order the complier has to folow. For the words, it did swap out each two bytes it to big endian, which makes sence, since its a word. As for the double word and quadro, they all seem to match up, with the double word being 4 bytes, therefore the most major(the biggest) is at byte 4, and the smallest at byte 5. When will you use this knowledge? Propably almost never, but once you encouter issue like this its very useful to know. Anyway, thats all for today, and see you next time