Lookup value1 in the hash table consts[n].
(The hash table's test is either EQ or EQL.)
If found, the hash table value is a signed FIXNUM,
jump to it: PC := PC + value. Else jump to label.
Invalidate values.

Lookup value1 in the hash table SVREF(consts[0],n).
(The hash table's test is either EQ or EQL.)
If found, the hash table value is a signed FIXNUM,
jump to it: PC := PC + value. Else jump to label.
Invalidate values.

(JSR label)

Subroutine call.

*--STACK := function. Then start interpreting the
bytecode at label, with values undefined.
When a (RET) is encountered,
program execution is resumed at the instruction after
(JSR label).

Calls the system function FUNTAB[b].
The right number of arguments is already on the STACK
(including #<UNBOUND>s in place of absent &OPTIONAL or
&KEY parameters).
The arguments are removed from the STACK. The returned values go into values.

Calls the system function FUNTAB[256+b].
The right number of arguments is already on the STACK
(including #<UNBOUND>s in place of absent &OPTIONAL or
&KEY parameters).
The arguments are removed from the STACK. The returned values go into values.

Calls the system function FUNTABR[b].
The minimum number of arguments is already on the STACK,
and m additional arguments as well.
The arguments are removed from the STACK. The returned values go into values.

Calls the compiled function value1.
The right number of arguments is already on the STACK
(including #<UNBOUND>s in place of absent &OPTIONAL
parameters).
The arguments are removed from the STACK. The returned values go into values.

Calls the compiled function value1.
The right number of arguments is already on the STACK
(including #<UNBOUND>s in place of absent &OPTIONAL
or &KEY parameters).
The arguments are removed from the STACK. The returned values go into values.

k := k1 + jmpbufsize * k2,
tagbody-cons := *(*(SP+k)+n).
If CDR(tagbody-cons) = #<DISABLED>, an ERROR is SIGNALed.
Else CDR(tagbody-cons) is a frame-pointer. Unwind the stack up
to this frame, pass it the number label.

37.5.16. Combined instructions

The most frequent short sequences of instructions have an
equivalent combined instruction. They are only present for space and
speed optimization. The only exception is
FUNCALL&SKIP&RETGF, which is needed for
generic functions.

mnemonic

equivalent

(NIL&PUSH)

(NIL) (PUSH)

(T&PUSH)

(T) (PUSH)

(CONST&PUSH n)

(CONST n) (PUSH)

(LOAD&PUSH n)

(LOAD n) (PUSH)

(LOADI&PUSH k1k2n)

(LOADI k1k2n) (PUSH)

(LOADC&PUSH nm)

(LOADC nm) (PUSH)

(LOADV&PUSH km)

(LOADV km) (PUSH)

(POP&STORE n)

(POP) (STORE n)

(GETVALUE&PUSH n)

(GETVALUE n) (PUSH)

(JSR&PUSH label)

(JSR label) (PUSH)

(COPY-CLOSURE&PUSH mn)

(COPY-CLOSURE mn) (PUSH)

(CALL&PUSH kn)

(CALL kn) (PUSH)

(CALL1&PUSH n)

(CALL1 n) (PUSH)

(CALL2&PUSH n)

(CALL2 n) (PUSH)

(CALLS1&PUSH b)

(CALLS1 b) (PUSH)

(CALLS2&PUSH b)

(CALLS2 b) (PUSH)

(CALLSR&PUSH mn)

(CALLSR mn) (PUSH)

(CALLC&PUSH)

(CALLC) (PUSH)

(CALLCKEY&PUSH)

(CALLCKEY) (PUSH)

(FUNCALL&PUSH n)

(FUNCALL n) (PUSH)

(APPLY&PUSH n)

(APPLY n) (PUSH)

(CAR&PUSH)

(CAR) (PUSH)

(CDR&PUSH)

(CDR) (PUSH)

(CONS&PUSH)

(CONS) (PUSH)

(LIST&PUSH n)

(LIST n) (PUSH)

(LIST*&PUSH n)

(LIST* n) (PUSH)

(NIL&STORE n)

(NIL) (STORE n)

(T&STORE n)

(T) (STORE n)

(LOAD&STOREC knm)

(LOAD k) (STOREC nm)

(CALLS1&STORE bk)

(CALLS1 b) (STORE k)

(CALLS2&STORE bk)

(CALLS2 b) (STORE k)

(CALLSR&STORE mnk)

(CALLSR mn) (STORE k)

(LOAD&CDR&STORE n)

(LOAD n) (CDR) (STORE n)

(LOAD&CONS&STORE n)

(LOAD n+1) (CONS) (STORE n)

(LOAD&INC&STORE n)

(LOAD n) (CALL1 #'1+) (STORE n)

(LOAD&DEC&STORE n)

(LOAD n) (CALL1 #'1-) (STORE n)

(LOAD&CAR&STORE mn)

(LOAD m) (CAR) (STORE n)

(CALL1&JMPIF nlabel)

(CALL1 n) (JMPIF label)

(CALL1&JMPIFNOT nlabel)

(CALL1 n) (JMPIFNOT label)

(CALL2&JMPIF nlabel)

(CALL2 n) (JMPIF label)

(CALL2&JMPIFNOT nlabel)

(CALL2 n) (JMPIFNOT label)

(CALLS1&JMPIF blabel)

(CALLS1 b) (JMPIF label)

(CALLS1&JMPIFNOT blabel)

(CALLS1 b) (JMPIFNOT label)

(CALLS2&JMPIF blabel)

(CALLS2 b) (JMPIF label)

(CALLS2&JMPIFNOT blabel)

(CALLS2 b) (JMPIFNOT label)

(CALLSR&JMPIF mnlabel)

(CALLSR mn) (JMPIF label)

(CALLSR&JMPIFNOT mnlabel)

(CALLSR mn) (JMPIFNOT label)

(LOAD&JMPIF nlabel)

(LOAD n) (JMPIF label)

(LOAD&JMPIFNOT nlabel)

(LOAD n) (JMPIFNOT label)

(LOAD&CAR&PUSH n)

(LOAD n) (CAR) (PUSH)

(LOAD&CDR&PUSH n)

(LOAD n) (CDR) (PUSH)

(LOAD&INC&PUSH n)

(LOAD n) (CALL1 #'1+) (PUSH)

(LOAD&DEC&PUSH n)

(LOAD n) (CALL1 #'1-) (PUSH)

(CONST&SYMBOL-FUNCTION n)

(CONST n) (SYMBOL-FUNCTION)

(CONST&SYMBOL-FUNCTION&PUSH n)

(CONST n) (SYMBOL-FUNCTION) (PUSH)

(CONST&SYMBOL-FUNCTION&STORE nk)

(CONST n) (SYMBOL-FUNCTION) (STORE k)

(APPLY&SKIP&RET nk)

(APPLY n) (SKIP&RET k)

(FUNCALL&SKIP&RETGF nk)

(FUNCALL n) (SKIP&RETGF k)

37.5.17. Shortcut instructions

There are special one-byte instructions (without explicit
operands) for the following frequent instructions: