3 frame push, Frame – ARM VERSION 1.2 User Manual

Page 318

Advertising
background image

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.

Advertising