ARM VERSION 1.2 Computer Hardware User Manual


 
Directives Reference
7-36 Copyright © 2000, 2001 ARM Limited. All rights reserved. ARM DUI 0068B
7.5.3 FRAME PUSH
Use the
FRAME PUSH
directive to inform the assembler when the callee saves registers,
normally at function entry. You can only use it within functions with
FUNCTION
and
ENDFUNC
or
PROC
and
ENDP
directives.
Syntax
There are two alternative syntaxes for
FRAME PUSH
:
FRAME PUSH {reglist}
FRAME PUSH n
where:
reglist
is a list of registers stored consecutively below the canonical frame
address. There must be at least one register in the list.
n
is the number of bytes that the stack pointer moves.
Usage
FRAME PUSH
is equivalent to a
FRAME ADDRESS
and a
FRAME SAVE
directive. You can use it
when a single instruction saves registers and alters the stack pointer.
You must use
FRAME PUSH
immediately after the instruction it refers to.
The assembler calculates the new offset for the canonical frame address. It assumes that:
each ARM register pushed occupies 4 bytes on the stack
each FPA floating-point register pushed occupies 12 bytes on the stack
each VFP single-precision register pushed occupies 4 bytes on the stack, plus an
extra 4-byte word for each list.
See FRAME ADDRESS on page 7-34 and FRAME SAVE on page 7-39.