Purpose: | To invoke a procedure with arguments located anywhere in memory. | |||
Format: | opcode arglst.ab, dst.ab | |||
Operation: |
{align stack}; {create stack frame}; {set arithmetic trap enables}; {set new values of AP, FP, PC}; |
|||
Condition Codes: |
N <- 0; Z <- 0; V <- 0; C <- 0; |
|||
Exceptions: | Reserved Operand | |||
Opcodes: |
|
|||
Description: | SP is saved in a temporary and then bits 1:0 are replaced by 0 so that the stack is long word aligned. The procedure entry mask is scanned from bit 11 to 0 and the contents of the registers whose number corresponds to set bits in the mask are pushed on the stack as long words. PC, FP and AP are pushed on the stack as longwords. The condition codes are cleared. A longword containing the saved two low bits of SP in bits 31:30, a 0 in bit 29 and bit 28, the low 12 bits of the procedure entry mask in bits 27:16 and the PSW in bits 15:0 with T cleared is pushed onto the Stack. A longword 0 is pushed onto the stack. FP is replaced by SP. AP is replaced by the arglist operand. The trap enables in the PSW are set to a known state. Integer overflow, and decimal overflow are affected according to bits 14 and 15 of the entry mask respectively; floating underflow is cleared. T-bit is unaffected. PC is replaced by the sum of destination operand plus 2 which transfers control to the called procedure at the byte beyond the entry mask. | |||
Notes: |
|