Chapter 9 Writing Machine Language Instructions and Directive StatementsWriting Directive Statements 1779.4.18 funcinfoSyntaxlabel operation operandfunction_namefuncinfo label_name, expression, register listwhere expression: Stack frame sizeFunctional descriptionThis directive provides additional information about a function name specified as the operand to a callinstruction. The call instruction branches to the function after saving registers to the stack and settingup 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 takesthe form of the funcinfo directive.lThe 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 rulesThe 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 ofthat 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 registersto be saved to the stack before entering the function proper. Enclose the list in square brackets ([ ]) andseparate 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 otherthan these five results in an error.NOTE: When writing directive statements in between the function and label_name, itmay not link properly or it may create a bad execution format.NOTE: Optimization can be performed for the instructions between label_name and thefunction name. For details, see Chapter 4 “Optimization Functions” Section 4.3“Usage Examples”, “Optimization of function calls”.Directive Specification RulesThe funcinfo directive must always define a branch target label for use with the call instruction.