annotate dyncall/README-Developer.txt @ 533:71c884e610f0

- integration of patches from Raphael Luba, Thekla, Inc.: * integration of aggregate-by-value (struct, union) support patch for x64 (win and sysv) * windows/x64 asm additions to specify how stack unwinds (help for debuggers, exception handling, etc.) * see Changelog for details - new calling convention modes for thiscalls (platform agnostic, was specific before) * new signature character for platform agnostic thiscalls ('*' / DC_SIGCHAR_CC_THISCALL) - dcCallF(), dcVCallF(), dcArgF() and dcVArgF(): * added support for aggregates-by-value (wasn't part of patch) * change that those functions don't implicitly call dcReset() anymore, which was unflexible (breaking change) - added macros to feature test implementation for aggregate-by-value and syscall support - changed libdyncall_s.lib and libdyncallback_s.lib order in callback test makefiles, as some toolchains are picky about order - doc: * man page updates to describe aggregate interface * manual overview changes to highlight platforms with aggregate-by-value support - test/plain: replaced tests w/ old/stale sctruct interface with new aggregate one
author Tassilo Philipp
date Thu, 21 Apr 2022 13:35:47 +0200
parents 3e629dc19168
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 Build with GCC Tool-Chain:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 One assembly front-end *.S source file for all supported architectures:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 Usage:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 gcc -c dyncall_call.S -o dyncall_call.o
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 Advantages:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 - works fine with universal binary builds (fat binaries), e.g.:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 gcc -arch i386 -arch ppc -arch x86_64 -c dyncall_call.S -o dyncall_call.o
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 Details:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 Simplified assembly file compilation via using a gigantic C Preprocessor switch include.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 source file "dyncall_call.S" selects the appropriate GAS/Apple assembly file
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 "dyncall_call_<arch>_<asmtool>.[sS]".
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 archs so far:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 arm32_thumb .s
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 arm32_arm .s
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 mips .s
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 ppc32 .s
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 x64 .s
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 x86 .S [ uses C macros ]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27 asmtools:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 gas - standard GNU assembler
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 apple - apple's assembler (based on GNU but is significantly different in syntax)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 masm - Microsoft assembler x86 and x64
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 nasm - Netwide assembler for x86 and x64
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 NOTE: .S is used for preprocessing assembly files using gcc
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 .s is used directly with as
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 advantages:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 - one way to build the kernel:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 gcc -c dyncall_call.S -o dyncall_call.o
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 - we can build now universal binaries
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45