Assembler Directives and Pseudo-Operations

.CALL Directive

.CALL Directive

The .CALL directive marks the next branch statement as a procedure call, and permits you to describe the location of arguments and the function return result.

Syntax

.CALL [ argument_description[ argument_description] ...]

Parameters

 

argument_

 

 

description

Allows you to communicate to the linker the types of

 

 

registers used to pass floating point arguments and

 

 

receive floating point return results in the succeeding

 

 

procedure call. Similarly, this information can be

 

 

communicated in the .EXPORT directive.

 

 

The linker requires this information because the

 

 

runtime architecture allows floating point arguments

 

 

and return values to reside in either general registers

 

 

or floating point registers, depending on source

 

 

language convention. At link time, the linker ensures

 

 

that both the caller and called procedure agree on

 

 

argument location. If not, the linker may insert code to

 

 

relocate the arguments (or return result) before control

 

 

is transferred to the called procedure or a procedure

 

 

return is completed.

 

 

You can use up to 5 argument-descriptionsin the

 

 

.CALL directive; one for each of the four arguments

 

 

that may be passed in registers (arg0arg3), and one

 

 

for a return value (ret0).

 

In PA-RISC 2.0W, (64-bit mode) the Assembler ignores the .CALL

NOTE

 

directive. This means that the linker does not ensure that the caller and

 

called procedure agree on argument locations. If you do not know the

 

prototype of the called procedure, you must pass floating point

Chapter 4

63