author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 29 Aug 2018 21:32:19 +0100 | |
changeset 50 | 7f439240d923 |
parent 23 | d2d9a2d4d6bf |
permissions | -rw-r--r-- |
23
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
# DragonFly Experimental Compiler |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
**DragonFly** is an experiment aiming to build a compiler for [Smalltalk/X][1] |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
in Smalltalk on top of [LLVM][2] toolchain (hence the "Dragon" :-) |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
DragonFly consists of: |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
* **jv:dragonfly** - contains Smalltalk interface to the Smalltalk/X VM providing an API to allocate and access garbage-collected machine code and data sections. |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
* **jv:dragonfly/asm** contains a port of Igor Stasenko's AsmJIT i386 and x86_64 assembler (thought x86_64 support is broken) |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
* **jv:dragonfly/udis86sx** contains Smalltalk binding to [UDIS86][3] i386 and x86_64 disassembler. |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
* **jv:dragonfly/c1** contains an (unfinished) experimental JIT compiler based on LLVM. Depends on [jv:llvm_s][8]. |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
## Installation |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
Since **jv:dragonfly** contains a C code, you need to have working build environment |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
for building Smalltalk/X jv-branch. For details see [Building Smalltalk/X jv-branch from sources][9]. |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
Following steps assume you have built Smalltalk/X in directory {{{stx_jv}}}. |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
**1.** Clone the repository: |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
``` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
#!bash |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
mkdir -p stx_jv/build/jv |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
hg clone https://bitbucket.org/janvrany/jv-dragonfly stx_jv/build/jv/dragonfly |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
``` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
**2.** Build it: |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
``` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
#!bash |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
cd stx_jv/build/jv/dragonfly |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
make |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
``` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
On Windows, do |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
``` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
#!bash |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
stx_jv\bin\setenv.bat |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
cd stx_jv\build\jv\dragonfly |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
mingwmake |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
``` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
**3.** To load it into running Smalltalk/X IDE, execute: |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
``` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
Smalltalk loadPackage: #'jv:drgonfly'. "Loads basic support" |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
Smalltalk loadPackage: #'jv:drgonfly/asm'. "Loads AsmJIT, a i386 assembler" |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
Smalltalk loadPackage: #'jv:drgonfly/udis86sx'. "Loads UDIS86, an x86 disassembler" |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
Smalltalk loadPackage: #'jv:drgonfly/c1'. "Loads unfinished C1 compiler" |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
``` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
Note, that for C1 compiler you need to have also [jv:llvm_s][8] |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
## Usage |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
See various example classes and tests, namely: |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
* [CompiledCodeObjectExamples][10] |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
## Author |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
Jan Vrany `<jan.vrany [at] fit.cvut.cz>` |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
## License |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
Different parts are licensed under different licenses. |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
* **jv:dragonfly** - [MIT][4] |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
* **jv:dragonfly/asm** - [MIT][5] |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
* **jv:dragonfly/udis86sx** - [BSD][6] |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
* **jv:dragonfly/c1** - [free for experimenting, no commercial use][7] |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
|
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
[1]: https://swing.fit.cvut.cz/projects/stx-jv/ |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
[2]: http://llvm.org/ |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
[3]: https://github.com/vmt/udis86 |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
[4]: https://bitbucket.org/janvrany/jv-dragonfly/src/default/license.txt |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
[5]: https://bitbucket.org/janvrany/jv-dragonfly/src/default/asm/license.txt |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
[6]: https://bitbucket.org/janvrany/jv-dragonfly/src/default/udis86sx/license.txt |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
[7]: https://bitbucket.org/janvrany/jv-dragonfly/src/default/c1/license.txt |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
[8]: https://bitbucket.org/janvrany/jv-llvm-s |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
[9]: https://swing.fit.cvut.cz/projects/stx-jv/wiki/Documentation/BuildingStXWithRakefiles |
d2d9a2d4d6bf
Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
[10]: https://bitbucket.org/janvrany/jv-dragonfly/src/default/CompiledCodeObjectExamples.st |