Next: , Up: Calling Convention


2.1 Assembly Routines

     ;;; The :full-call assembly-routines must use the same full-call
     ;;; unknown-values return convention as a normal call, as some
     ;;; of the routines will tail-chain to a static-function. The
     ;;; routines themselves, however, take all of their arguments
     ;;; in registers (this will typically be one or two arguments,
     ;;; and is one of the lower bounds on the number of argument-
     ;;; passing registers), and thus don't need a call frame, which
     ;;; simplifies things for the normal call/return case. When it
     ;;; is neccessary for one of the assembly-functions to call a
     ;;; static-function it will construct the required call frame.
     ;;; Also, none of the assembly-routines return other than one
     ;;; value, which again simplifies the return path.
     ;;;    -- AB, 2006/Feb/05.

There are a couple of assembly-routines that implement parts of the process of returning or tail-calling with a variable number of values. These are return-multiple and tail-call-variable in src/assembly/x86/assem-rtns.lisp. They have their own calling convention for invocation from a VOP, but implement various block-move operations on the stack contents followed by a return or tail-call operation.

That's about all I have to say about the assembly-routines.