/sys$common/syshlp/helplib.hlb MACRO, VAX MACRO Assembler, Instructions, CALLG *Conan The Librarian (sorry for the slow response - running on an old VAX) |
Purpose: Call with general argument list - invoke a procedure with actual arguments from anywhere in memory Format: opcode arglist.ab,dst.ab Operation: {align stack}; {create stack frame}; {set arithmetic trap enables}; {set new values of AP, FP, PC} C. Codes: N = 0, Z = 0, V = 0, C = 0 Exceptions: Reserved operand Opcode: FA CALLG Call proc., general arglist Description: SP is saved in a temporary (tmp) and then bits 1:0 of SP are cleared so the stack is longword aligned. The procedure entry mask (pointed to by dst) is scanned from bit 11 to bit 0 and the contents of the registers whose numbers correspond to set bits in the mask are pushed on the stack as longwords. Next AP, FP and the current PC are pushed onto the stack as longwords. The condition codes are cleared. A longword containing the saved two low bits of SP in bits 31:30 (tmp), 0 in bits 29:28, the low 12 bits of the entry mask in bits 27:16 and the PSW in bits 15:0 with T cleared is pushed on the stack. A longword 0 is pushed on the stack (for the condition handler). FP is replaced by SP, AP is replaced by arglist. The trap enables in PSW are set to a known state. Integer and decimal overflow are set according to bits 14 and 15 of the entry mask respectively. The floating underflow bit is cleared and the T-bit is unaffected. PC is replaced by dst + 2, skipping the entry mask and transferring control to the byte beyond the mask.
|