Mercurial > pub > dyncall > dyncall
annotate doc/manual/manual_overview.tex @ 299:1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
author | Tassilo Philipp |
---|---|
date | Sat, 19 May 2018 18:25:29 +0200 |
parents | aa0d2536a4eb |
children | 24fe46874d4a |
rev | line source |
---|---|
0 | 1 %////////////////////////////////////////////////////////////////////////////// |
2 % | |
3 % Copyright (c) 2007,2009 Daniel Adler <dadler@uni-goettingen.de>, | |
4 % Tassilo Philipp <tphilipp@potion-studios.com> | |
5 % | |
6 % Permission to use, copy, modify, and distribute this software for any | |
7 % purpose with or without fee is hereby granted, provided that the above | |
8 % copyright notice and this permission notice appear in all copies. | |
9 % | |
10 % THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 % WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 % MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 % ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 % WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 % ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 % OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 % | |
18 %////////////////////////////////////////////////////////////////////////////// | |
19 | |
20 \newpage | |
21 | |
22 \section{Overview} | |
23 | |
24 The \product{dyncall} library encapsulates architecture-, OS- and compiler-specific | |
72 | 25 function call semantics in a virtual % |
26 % | |
73 | 27 \casehtml{\Tg<span class="marker">}{\begin{center}}% |
0 | 28 \emph{bind argument parameters from left to right and then call} |
72 | 29 \casehtml{\Tg</span>}{\end{center}}% |
30 % | |
0 | 31 interface allowing programmers to call C functions |
32 in a completely dynamic manner. In other words, instead of calling a function | |
33 directly, the \product{dyncall} library provides a mechanism to push the function parameters | |
34 manually and to issue the call afterwards.\\ | |
35 Since the idea behind this concept is similar to call dispatching mechanisms | |
36 of virtual machines, the object that can be dynamically loaded with arguments, | |
37 and then used to actually invoke the call, is called CallVM. It is possible to | |
38 change the calling convention used by the CallVM at run-time. | |
39 Due to the fact that nearly every platform comes with one or more distinct calling | |
40 conventions, the \product{dyncall} library project intends to be a portable and open-source | |
41 approach to the variety of compiler-specific binary interfaces, platform specific | |
42 subtleties, and so on\ldots\\ | |
43 \\ | |
44 The core of the library consists of dynamic implementations of different | |
45 calling conventions written in assembler. | |
46 Although the library aims to be highly portable, some assembler code needs to | |
47 be written for nearly every platform/compiler/OS combination. | |
48 Unfortunately, there are architectures we just don't have at home or work. If | |
49 you want to see \product{dyncall} running on such a platform, feel free to send | |
50 in code and patches, or even to donate hardware you don't need anymore. | |
73 | 51 Check the \textbf{supported platforms} section for an overview of the supported |
0 | 52 platforms and the different calling convention sections for details about the |
53 support. | |
54 \\ | |
55 \begin{comment} | |
56 @@@ | |
57 A typical binary library consists of symbolic names that map to variables and | |
58 functions, the latter being pre-compiled for a | |
59 specific calling convention and architecture. Given \product{dyncall} has been ported to | |
60 that binary platform, it is possible to call such a function dynamically | |
61 without writing glue code or prototypes or even knowing its C declaration - | |
62 all that is needed is a pointer to it.\\ | |
63 To avoid confusion, note that from the point of view of the library all | |
64 parameters are handled the same way, even though the implementation might use | |
65 other ways to pass parameters in order to suit specific calling conventions.\\ | |
66 \end{comment} | |
67 | |
68 | |
69 \subsection{Features} | |
70 | |
71 \begin{itemize} | |
72 \item A portable and extendable function call interface for the C programming | |
73 language. | |
74 \item Ports to major platforms including Windows, Mac OS X, Linux, BSD derivates, iPhone and embedded devices and more, including lesser known and/or older platforms like Plan 9, Playstation Portable, Nintendo DS, etc.. | |
75 \item Add-on language bindings to Python, R, Ruby, Go, Erlang, Java, Lua, sh, ... | |
76 \item High-level state machine design using C to model calling convention | |
77 parameter transfer. | |
78 \item One assembly \emph{hybrid} call routine per calling convention. | |
79 \item Formatted call, vararg function API. | |
80 \item Comprehensive test suite. | |
81 \end{itemize} | |
82 | |
83 \pagebreak | |
84 | |
85 \subsection{Showcase} | |
86 | |
87 \paragraph{Foreign function call in C} | |
88 This section demonstrates how the foreign function call is issued without, and then | |
89 with, the help of the \product{dyncall} library and scripting language | |
90 bindings. | |
91 | |
92 \begin{lstlisting}[language=c,caption=Foreign function call in C] | |
93 double call_as_sqrt(void* funptr, double x) | |
94 { | |
95 return ( ( double (*)(double) )funptr)(x); | |
96 } | |
97 \end{lstlisting} | |
98 | |
99 \paragraph{\product{Dyncall} C library example} | |
100 | |
101 The same operation can be broken down into atomic pieces | |
102 (specify calling convention, binding arguments, invoking the call) | |
103 using the \dc\ library. | |
104 | |
105 \begin{lstlisting}[language=c,caption=Dyncall C library example] | |
106 #include <dyncall.h> | |
107 double call_as_sqrt(void* funptr, double x) | |
108 { | |
109 double r; | |
110 DCCallVM* vm = dcNewCallVM(4096); | |
111 dcMode(vm, DC_CALL_C_DEFAULT); | |
112 dcReset(vm); | |
113 dcArgDouble(vm, x); | |
114 r = dcCallDouble(vm, funptr); | |
115 dcFree(vm); | |
116 return r; | |
117 } | |
118 \end{lstlisting} | |
119 | |
120 As you can see, this is more code after all, but completely dynamic. | |
121 And definitely less than generated glue-code for each function call, if | |
122 used correctly. | |
123 | |
124 The following are examples from script bindings: | |
125 | |
126 \paragraph{Python example} | |
127 | |
128 \begin{lstlisting}[language=python,caption=Dyncall Python bindings example] | |
129 import pydc | |
130 def call_as_sqrt(funptr,x): | |
131 return pydc.call(funptr,"d)d", x) | |
132 \end{lstlisting} | |
133 | |
134 | |
135 \paragraph{R example} | |
136 | |
137 \begin{lstlisting}[language=R,caption=Dyncall R bindings example,escapeinside={TEX}{XET}] % escapeinside is a workaround for issues with '<' in lstlisting+tex4ht | |
138 library(rdyncall) | |
139 call.as.sqrt TEX\textlessXET- function(funptr,x) | |
140 .dyncall(funptr,"d)d", x) | |
141 \end{lstlisting} | |
142 | |
143 | |
144 \pagebreak | |
145 | |
146 \subsection{Supported platforms/architectures} | |
147 | |
148 The feature matrix below gives a brief overview of the currently supported | |
149 platforms. Different colors are used, where a green cell indicates a supported | |
150 platform, yellow a platform that might work (but is untested) and red a platform | |
151 that is currently unsupported. Gray cells are combinations that don't exist | |
152 at the time of writing, or that are not taken into account.\\ | |
153 Light green cells mark complete feature support, as in dyncall and dyncallback. Dark green means basic support but lacking features (e.g. dyncall support, but not dyncallback). | |
154 Please note that a green cell (even a light-green one) doesn't imply that all existing calling conventions/features/build tools are supported for that platform (but the most | |
299
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
155 important). The rightmost column gives a brief info about calling convention support or other notes. |
0 | 156 For detailed info about a platform's support consult the calling convention appendix. |
157 | |
299
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
158 % OLD support matrix |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
159 %\begin{table}[h] |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
160 %\begin{tabular}{r|*{3}{c!{\color{gray2}\vrule}}*{4}{c!{\color{gray2}\vrule}}*{11}{c!{\color{gray2}\vrule}}} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
161 % & \ninety{\bf Alpha} & \ninety{\bf ARM} & \ninety{\bf ARM64} & \multicolumn{2}{c!{\color{gray2}\vrule}}{\ninety{\bf MIPS}} & \multicolumn{2}{c!{\color{gray2}\vrule}}{\ninety{\bf MIPS64}} & \ninety{\bf SuperH} & \ninety{\bf PowerPC} & \ninety{\bf PowerPC64} & \ninety{\bf m68k} & \ninety{\bf m88k} & \ninety{\bf x86} & \ninety{\bf x64} & \ninety{\bf Itanium} & \ninety{\bf SPARC} & \ninety{\bf SPARC64} & \ninety{\bf RISC-V} \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
162 % & & & & \ninety{\tiny EB} & \ninety{\tiny EL} & \ninety{\tiny EB} & \ninety{\tiny EL} & & & & & & & & & & & \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
163 %\hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
164 %{\bf Windows family} & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknimp & \marknotx & \marknotx & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
165 %{\bf Linux} & \marknimp & \markcmpl & \markcmpl & \markcmpl & \markunkn & \markunkn & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
166 %{\bf macOS / iOS / Darwin} & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markunkn & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
167 %{\bf FreeBSD} & \marknimp & \markcmpl & \markcmpl & \markunkn & \markunkn & \markunkn & \markunkn & \marknotx & \markimpl & \markcmpl & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknimp & \marknotx & \markcmpl & \marknimp \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
168 %{\bf NetBSD} & \marknimp & \markcmpl & \marknotx & \markunkn & \markcmpl & \markunkn & \markunkn & \marknimp & \markimpl & \marknotx & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknimp \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
169 %{\bf OpenBSD} & \marknimp & \markcmpl & \markunkn & \markunkn & \markunkn & \markcmpl & \markunkn & \marknimp & \markunkn & \marknotx & \marknimp & \marknimp & \markcmpl & \markcmpl & \marknimp & \markcmpl & \markcmpl & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
170 %{\bf DragonFlyBSD} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
171 %{\bf Solaris / SunOS} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \markcmpl & \markimpl & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
172 %{\bf Plan 9 / 9front} & \marknimp & \marknimp & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \markcmpl & \marknimp & \marknotx & \marknimp & \marknotx & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
173 %{\bf Haiku / BeOS} & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
174 %{\bf Minix} & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
175 %{\bf Playstation Portable} & \marknotx & \marknotx & \marknotx & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
176 %{\bf Nintendo DS} & \marknotx & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
177 %\end{tabular} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
178 %\caption{Supported platforms}% |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
179 %\end{table} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
180 |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
181 \newcommand{\OSwinfam} {\ninety{Windows family} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
182 \newcommand{\OSlinux} {\ninety{Linux} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
183 \newcommand{\OSdarwin} {\ninety{macOS / iOS / Darwin}} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
184 \newcommand{\OSfreebsd}{\ninety{FreeBSD} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
185 \newcommand{\OSnetbsd} {\ninety{NetBSD} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
186 \newcommand{\OSopenbsd}{\ninety{OpenBSD} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
187 \newcommand{\OSdflybsd}{\ninety{DragonFlyBSD} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
188 \newcommand{\OSsunos} {\ninety{Solaris / SunOS} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
189 \newcommand{\OSplanN} {\ninety{Plan 9 / 9front} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
190 \newcommand{\OSbeos} {\ninety{Haiku / BeOS} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
191 \newcommand{\OSminix} {\ninety{Minix} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
192 \newcommand{\OSpsp} {\ninety{Playstation Portable}} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
193 \newcommand{\OSnds} {\ninety{Nintendo DS} } |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
194 |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
195 % also include hardfloat/softfloat @@@ |
0 | 196 \begin{table}[h] |
299
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
197 \begin{tabular}{r>{\rule{0pt}{2.5ex}\tiny}l*{12}{c!{\color{gray3}\vrule}}c>{\tiny}l} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
198 & & \OSwinfam & \OSlinux & \OSdarwin & \OSfreebsd & \OSnetbsd & \OSopenbsd & \OSdflybsd & \OSsunos & \OSplanN & \OSbeos & \OSminix & \OSpsp & \OSnds \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
199 \arrayrulecolor{gray3} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
200 Alpha & & \marknotx & \marknimp & \marknotx & \marknimp & \marknimp & \marknimp & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
201 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
202 ARM & & \markunkn & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \marknotx & \marknotx & \marknimp & \marknotx & \markunkn & \marknotx & \markcmpl \\%& atpcs (arm \& thumb), eabi (arm \& thumb), armhf\\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
203 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
204 ARM64 & & \marknotx & \markcmpl & \markcmpl & \markcmpl & \marknotx & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& aapcs64, apple\\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
205 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
206 \multirow{2}{*}{MIPS} & EB & \marknotx & \markcmpl & \marknotx & \markcmpl & \markunkn & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{o32, n32, eabi / only hardfloat support} \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
207 \hhline{*{1}{|~}*{14}{|-}} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
208 & EL & \marknotx & \markunkn & \marknotx & \markcmpl & \markcmpl & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \markcmpl & \marknotx \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
209 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
210 \multirow{2}{*}{MIPS64} & EB & \marknotx & \markunkn & \marknotx & \markcmpl & \markunkn & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \multirow{2}{*}{n64 / only hardfloat support} \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
211 \hhline{*{1}{|~}*{14}{|-}} |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
212 & EL & \marknotx & \markcmpl & \marknotx & \markcmpl & \markunkn & \markunkn & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
213 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
214 SuperH & & \marknotx & \marknimp & \marknotx & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
215 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
216 PowerPC & & \marknotx & \markcmpl & \markcmpl & \markimpl & \markimpl & \markunkn & \marknotx & \marknotx & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& apple, sysv\\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
217 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
218 PowerPC64 & & \marknotx & \markcmpl & \markunkn & \markcmpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& elf\\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
219 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
220 m68k & & \marknotx & \marknimp & \marknotx & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
221 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
222 m88k & & \marknotx & \marknimp & \marknotx & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
223 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
224 x86 & & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \marknotx & \marknotx \\%& cdecl, stdcall, fastcall (MS \& GNU), thiscall (MS \& GNU), plan9 \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
225 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
226 x64 & & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \markcmpl & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& ms, sysv\\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
227 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
228 Itanium & & \marknimp & \marknimp & \marknotx & \marknimp & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
229 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
230 SPARC & & \marknotx & \markcmpl & \marknotx & \marknotx & \markcmpl & \markcmpl & \marknotx & \markcmpl & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx \\%& v7, v8\\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
231 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
232 SPARC64 & & \marknotx & \markcmpl & \marknotx & \markcmpl & \markcmpl & \markcmpl & \marknotx & \markimpl & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& v9 \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
233 \hline |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
234 RISC-V & & \marknotx & \marknimp & \marknotx & \marknimp & \marknimp & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx & \marknotx \\%& \\ |
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
235 |
0 | 236 \end{tabular} |
92 | 237 \caption{Supported platforms}% |
0 | 238 \end{table} |
239 | |
299
1fa2427dae49
- changed style of support matrix, marked freebsd/mips complet (hardfloat, only, though)
Tassilo Philipp
parents:
271
diff
changeset
|
240 |
250
7cb8a0aaf638
- note about c99 (+ anon struct/union) requirements in doc
Tassilo Philipp
parents:
225
diff
changeset
|
241 \subsection{Build Requirements} |
7cb8a0aaf638
- note about c99 (+ anon struct/union) requirements in doc
Tassilo Philipp
parents:
225
diff
changeset
|
242 |
7cb8a0aaf638
- note about c99 (+ anon struct/union) requirements in doc
Tassilo Philipp
parents:
225
diff
changeset
|
243 The library needs at least a c99 compiler with additional support for anonymous |
7cb8a0aaf638
- note about c99 (+ anon struct/union) requirements in doc
Tassilo Philipp
parents:
225
diff
changeset
|
244 structs/unions (which were introduced officially in c11). Given that those are |
7cb8a0aaf638
- note about c99 (+ anon struct/union) requirements in doc
Tassilo Philipp
parents:
225
diff
changeset
|
245 generally supported by pretty much all major c99 conforming compilers (as |
7cb8a0aaf638
- note about c99 (+ anon struct/union) requirements in doc
Tassilo Philipp
parents:
225
diff
changeset
|
246 default extension), it should build fine with a c99 toolchain. |
7cb8a0aaf638
- note about c99 (+ anon struct/union) requirements in doc
Tassilo Philipp
parents:
225
diff
changeset
|
247 |