Study Web

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!)