Writing ARM and Thumb Assembly Language

2.10.4Finding the end of the allocated data

You can use the FIELD directive with an operand of 0 to label a location within a structure. The location is labeled, but the location counter is not incremented.

The size of the data structure defined in Example 2-19 depends on the values of MaxStrLen and ArrayLen. If these values are too large, the structure overruns the end of available memory.

Example 2-19 uses:

an EQU directive to define the end of available memory

a FIELD directive with an operand of 0 to label the end of the data structure.

An ASSERT directive checks that the end of the data structure does not overrun the available memory.

Example 2-19

StartOfData

EQU

0x1000

EndOfData

EQU

0x2000

 

MAP

StartOfData

Integer

FIELD

4

Integer2

FIELD

4

String

FIELD

MaxStrLen

Array

FIELD

ArrayLen*8

BitMask

FIELD

4

EndOfUsedData

FIELD

0

 

ASSERT

EndOfUsedData <= EndOfData

 

 

 

ARM DUI 0068B

Copyright © 2000, 2001 ARM Limited. All rights reserved.

2-55

Page 67
Image 67
ARM VERSION 1.2 manual Finding the end of the allocated data