Week 7
ARM Assembly Programming – LittlEndian Memory Addressing
COS10004 Computer Systems · Lecture 7.5 ARM Assembly Programming – LittlEndian
Memory Addressing
ARMlite models
“byte” addressable ARMLITE memory
MEMORY
- ADDRESSING That is
- every byte can be indexed individually
BYTE ADDRESSABLE MEMORY
Address: 0x00000
BYTE ADDRESSABLE MEMORY
Address: 0x00001
BYTE ADDRESSABLE MEMORY
Address: 0x00002
BYTE ADDRESSABLE MEMORY
Address: 0x00003
BYTE ADDRESSABLE MEMORY
Address: 0x00004
BYTE ADDRESSABLE MEMORY
Address: 0x00005
BYTE ADDRESSABLE MEMORY
Address: 0x00006
BYTE ADDRESSABLE MEMORY
Address: 0x00007
BYTE ADDRESSABLE MEMORY
What I just showed you hopefully made complete sense
The problem is …..
What I just showed you hopefully made complete sense
The problem is …..
I lied
ARMLITE USES LITTLE ENDIAN
- Recall Big Endian versus Little Endian
- Big Endian:
- The most significant bits are represented first in memory
- Little Endian:
- The least significant bits are represented first in memory
- ARMlite displays memory values in Big Endian format
- BUT – addresses them using Little Endian
So …..
LITTLEENDIAN BYTE ADDRESSABLE MEMORY
Address: 0x00000
LITTLE ENDIAN BYTE ADDRESSABLE MEMORY
Address: 0x00001
LITTLE ENDIAN BYTE ADDRESSABLE MEMORY
Address: 0x00002
LITTLE ENDIAN BYTE ADDRESSABLE MEMORY
Address: 0x00003
LITTLE ENDIAN BYTE ADDRESSABLE MEMORY
Address: 0x00004
LITTLE ENDIAN BYTE ADDRESSABLE MEMORY
Address: 0x00005
LITTLE ENDIAN BYTE ADDRESSABLE MEMORY
Address: 0x00006
LITTLE ENDIAN BYTE ADDRESSABLE MEMORY
Address: 0x00007
SUMMARY
- When working at the level of bytes and bits, endianness matters a lot.
- In all our ARMlite programming, remember we will be working with bit strings in Little Endian format in memory (despite how they are displayed on the screen!)