Chapter 9 Writing Machine Language Instructions and Directive Statements

9.4.18 funcinfo

Syntax

label

operation

operand

function_namefuncinfo

label_name, expression, register list

where

expression: Stack frame size

Functional description

This directive provides additional information about a function name specified as the operand to a call instruction. The call instruction branches to the function after saving registers to the stack and setting up the stack frame. To use call instructions, the program must define the stack frame size and the reg- isters to be saved using a special format in the function’s declaration section. This special format takes the form of the funcinfo directive.l

The linker uses the specified stack size and register list to automatically set up the proper calling se- quences for calls to the function.

Operand coding rules

The label_name gives the branch target used by instructions other than the call instruction--the call in- struction, for example. This label_name is necessary even if no other instructions call it. In that case, assign a label to any empty statement immediately preceding the funcinfo directive and use the name of that label. The label_name must be defined prior to the funcinfo directive. Otherwise, an error results. The expression gives the size of the stack frame used by the function. It must evaluate to a value be- tween 0 and255. A value outside this range results in an error. The register list gives a list of registers to be saved to the stack before entering the function proper. Enclose the list in square brackets ([ ]) and separate the registers in the list with commas. The registers that can appear in the list are D2, D3, A2, A3 and OTHER, where OTHER indicates D0, D1, A0, A1, MDR, LIR. A register specification other than these five results in an error.

NOTE:

When writing directive statements in between the function and label_name, it

 

 

may not link properly or it may create a bad execution format.

 

 

 

NOTE:

Optimization can be performed for the instructions between label_name and the

 

 

function name. For details, see Chapter 4 “Optimization Functions” Section 4.3

 

 

“Usage Examples”, “Optimization of function calls”.

 

 

 

Directive Specification Rules

The funcinfo directive must always define a branch target label for use with the call instruction.

Writing Directive Statements 177

Page 189
Image 189
Panasonic MN1030 user manual Funcinfo, Directive Specification Rules, Usage Examples, Optimization of function calls