Assembler Directives and
.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 |
|
| .CALL directive; one for each of the four arguments |
|
| that may be passed in registers |
|
| for a return value (ret0). |
| In | |
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 |