Created
August 12, 2016 17:05
-
-
Save Alcaro/d90daf1008e1e1c76a800f8116ff7c8a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
assume DRAM is constant endian | |
u8[] DRAM = {1,2,3,4} | |
big endian | |
pix = *(int32_t *)(DRAM + addr); - pix = 1234 | |
argb[1 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 24); - argb[1] = 1 | |
argb[2 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 16); - argb[2] = 2 | |
argb[3 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 8); - argb[3] = 3 | |
argb[0 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 0); - argb[0] = 4, argb[]={4,1,2,3} | |
scanline[i] = *(int32_t *)(argb); - scanline = 4123 | |
u8[] DRAM = {1,2,3,4} | |
little endian | |
pix = *(int32_t *)(DRAM + addr); - pix = 4321 | |
argb[1 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 24); - argb[2] = 4 | |
argb[2 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 16); - argb[1] = 3 | |
argb[3 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 8); - argb[0] = 2 | |
argb[0 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 0); - argb[3] = 1, argb[]={2,3,4,1} | |
scanline[i] = *(int32_t *)(argb); - scanline = 1432 | |
not equal, assumption is false | |
assume DRAM is host endian | |
u8[] DRAM = {1,2,3,4} | |
big endian | |
pix = *(int32_t *)(DRAM + addr); - pix = 1234 | |
argb[1 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 24); - argb[1] = 1 | |
argb[2 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 16); - argb[2] = 2 | |
argb[3 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 8); - argb[3] = 3 | |
argb[0 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 0); - argb[0] = 4, argb[]={4,1,2,3} | |
scanline[i] = *(int32_t *)(argb); - scanline = 4123 | |
u8[] DRAM = {4,3,2,1} | |
little endian | |
pix = *(int32_t *)(DRAM + addr); - pix = 1234 | |
argb[1 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 24); - argb[2] = 1 | |
argb[2 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 16); - argb[1] = 2 | |
argb[3 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 8); - argb[0] = 3 | |
argb[0 ^ BYTE_ADDR_XOR] = (unsigned char)(pix >> 0); - argb[3] = 4, argb[]={3,2,1,4} | |
scanline[i] = *(int32_t *)(argb); - scanline = 4123 | |
equal, assumption is reasonable (and all other possible assumptions are false) | |
and scanline is a u32 array, so its endian isn't relevant |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment