annotate dyncall/README-Developer.txt @ 357:d982a00c2177

- PPC64 asm syntax fix, specifying explicitly comparison mode for cmpi (newer toolchains complain, older ones took optional field of instruction which happened to be same value)
author Tassilo Philipp
date Tue, 25 Feb 2020 18:16:13 +0100
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