By default, the compiler and linker work together to locate the stack at the end of IDATA memory. For example:
LINK MAP OF MODULE: Measure (MEASURE)
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
REG 0008H 0008H ABSOLUTE "REG BANK 1"
DATA 0010H 0001H UNIT ?DT?GETCHAR
IDATA 0011H 000FH UNIT _IDATA_GROUP_
.
.
.
IDATA 0066H 0010H UNIT ?ID?MEASURE
IDATA 0076H 0003H UNIT ?ID?MCOMMAND
IDATA 0079H 0001H UNIT ?STACK
The STACK directive may be used to relocate the ?ID?MEASURE segment at the top of IDATA just before the stack. For example:
BL51 ... STACK(?ID?MEASURE)
Causes the following memory map changes.
LINK MAP OF MODULE: Measure (MEASURE)
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
REG 0008H 0008H ABSOLUTE "REG BANK 1"
DATA 0010H 0001H UNIT ?DT?GETCHAR
IDATA 0011H 000FH UNIT _IDATA_GROUP_
.
.
.
IDATA 0066H 0003H UNIT ?ID?MCOMMAND
IDATA 0069H 0010H UNIT ?ID?MEASURE
IDATA 0079H 0001H UNIT ?STACK
The STACK directive may be used to relocate the ?ID?MEASURE segment at the very top of memory. For example:
BL51 ... STACK(?STACK(069h),?ID?MEASURE(0F0h))
Causes the following memory map changes.
LINK MAP OF MODULE: Measure (MEASURE)
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
REG 0008H 0008H ABSOLUTE "REG BANK 1"
DATA 0010H 0001H UNIT ?DT?GETCHAR
IDATA 0011H 000FH UNIT _IDATA_GROUP_
.
.
.
IDATA 0066H 0003H UNIT ?ID?MCOMMAND
IDATA 0069H 0001H UNIT ?STACK
006AH 0086H *** GAP ***
IDATA 00F0H 0010H UNIT ?ID?MEASURE
|