Directives Reference

7.5.3FRAME 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.

nis 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.

7-36

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

ARM DUI 0068B

Page 318
Image 318
ARM VERSION 1.2 manual There are two alternative syntaxes for Frame Push