This file is indexed.

/usr/share/doc/sbcl/sbcl-internals/Full-Calls.html is in sbcl-doc 2:1.4.5-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is part of the SBCL software system. See the
README file for more information.

This manual is in the public domain and is provided with absolutely no
warranty. See the COPYING and CREDITS files for more
information. -->
<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Full Calls (SBCL Internals)</title>

<meta name="description" content="Full Calls (SBCL Internals)">
<meta name="keywords" content="Full Calls (SBCL Internals)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html#Top" rel="start" title="Top">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Calling-Convention.html#Calling-Convention" rel="up" title="Calling Convention">
<link href="Unknown_002dValues-Returns.html#Unknown_002dValues-Returns" rel="next" title="Unknown-Values Returns">
<link href="Local-Calls.html#Local-Calls" rel="prev" title="Local Calls">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en">
<a name="Full-Calls"></a>
<div class="header">
<p>
Next: <a href="Unknown_002dValues-Returns.html#Unknown_002dValues-Returns" accesskey="n" rel="next">Unknown-Values Returns</a>, Previous: <a href="Local-Calls.html#Local-Calls" accesskey="p" rel="prev">Local Calls</a>, Up: <a href="Calling-Convention.html#Calling-Convention" accesskey="u" rel="up">Calling Convention</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>
<hr>
<a name="Full-Calls-1"></a>
<h3 class="section">2.3 Full Calls</h3>

<div class="example">
<pre class="example">;;; There is something of a cross-product effect with full calls.
;;; Different versions are used depending on whether we know the
;;; number of arguments or the name of the called function, and
;;; whether we want fixed values, unknown values, or a tail call.
;;;
;;; In full call, the arguments are passed creating a partial frame on
;;; the stack top and storing stack arguments into that frame. On
;;; entry to the callee, this partial frame is pointed to by FP.
</pre></div>

<p>Basically, we use caller-allocated frames, pass an fdefinition,
function, or closure in <code>EAX</code>, argcount in <code>ECX</code>, and first
three args in <code>EDX</code>, <code>EDI</code>, and <code>ESI</code>. <code>EBP</code>
points to just past the start of the frame (the first frame slot is at
<code>[EBP-4]</code>, not the traditional <code>[EBP]</code>, due in part to how
the frame allocation works). The caller stores the link for the old
frame at <code>[EBP-4]</code> and reserved space for a return address at
<code>[EBP-8]</code>. <code>[EBP-12]</code> appears to be an empty slot that
conveniently makes just enough space for the first three multiple
return values (returned in the argument passing registers) to be
written over the beginning of the frame by the receiver. The first
stack argument is at <code>[EBP-16]</code>. The callee then reallocates the
frame to include sufficient space for its local variables, after
possibly converting any <code>&amp;rest</code> arguments to a proper list.
</p>
<p>The above scheme was changed in 1.0.27 on x86 and x86-64 by swapping
the old frame pointer with the return address and making EBP point two
words later:
</p>
<p>On x86/x86-64 the stack now looks like this (stack grows downwards):
</p>
<pre class="verbatim">----------
RETURN PC
----------
OLD FP
---------- &lt;- FP points here
EMPTY SLOT
----------
FIRST ARG
----------
</pre>
<p>just as if the function had been CALLed and upon entry executed the
standard prologue: PUSH EBP; MOV EBP, ESP. On other architectures the
stack looks like this (stack grows upwards):
</p>
<pre class="verbatim">----------
FIRST ARG
----------
EMPTY SLOT
----------
RETURN PC
----------
OLD FP
---------- &lt;- FP points here
</pre>

<hr>
<div class="header">
<p>
Next: <a href="Unknown_002dValues-Returns.html#Unknown_002dValues-Returns" accesskey="n" rel="next">Unknown-Values Returns</a>, Previous: <a href="Local-Calls.html#Local-Calls" accesskey="p" rel="prev">Local Calls</a>, Up: <a href="Calling-Convention.html#Calling-Convention" accesskey="u" rel="up">Calling Convention</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>



</body>
</html>