blob: cade5e473f897644b7739892178204ee97825fa3 (
plain)
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
|
~ cat evoke.e | ./evoke > evoke2 && chmod 755 evoke2
s" compilation/labels.e" include
s" compilation/elf.e" include
s" compilation/transform.e" include
s" compilation/execution.e" include
: read-inputs
here @ dup
s" language/static/core.e" pack-file-contents
s" language/static/linux.e" pack-file-contents
s" language/static/output.e" pack-file-contents
s" language/static/amd64.e" pack-file-contents
s" language/static/execution-support.e" pack-file-contents
s" language/static/log-load.e" pack-file-contents
0 pack8 8 packalign here !
s" source-to-precompile" variable
here @ dup
s" language/static/core.e" pack-file-contents
s" language/static/linux.e" pack-file-contents
s" language/static/output.e" pack-file-contents
s" language/static/amd64.e" pack-file-contents
s" language/static/execution-support.e" pack-file-contents
s" language/static/log-load.e" pack-file-contents
s" language/dynamic/dynamic.e" pack-file-contents
s" language/dynamic/input.e" pack-file-contents
s" language/dynamic/interpret.e" pack-file-contents
s" language/dynamic/flow-control.e" pack-file-contents
s" language/dynamic/linux.e" pack-file-contents
s" language/dynamic/files.e" pack-file-contents
0 pack8 8 packalign here !
s" source-to-copy-to-log" variable
s" relink-main-input-buffer-to-stdin"
s" source-to-textually-include" variable ;
read-inputs
~ (output memory start, current output point
~ -- output memory start, current output point)
~
~ Everything directly called by all-contents has this same interface.
~
: all-contents
~ : This particular program is 'evoke', the compiler. If you already have
~ : a binary copy of 'hex', run this file through it and you'll have a
~ : working compiler. Pretty sweet, right?
~ :
~ : If you're auditing this by hand, first off, thank you for doing that.
~ : You may wish to pull up the source code side-by-side with the hex dump;
~ : there's a lot of structural stuff in the actual source that aids in
~ : readability but isn't easily reproduced in this form, though every
~ : effort has been made.
~ : blank-line
0x08000000 L!' origin
elf-file-header
elf-program-header
output-cold-start
output-warm-start-header
source-to-copy-to-log log-load-transform
output-warm-start-post-log-load-transform
output-warm-start-attach-boot-source
output-warm-start-footer
source-to-precompile label-transform
source-to-textually-include output-boot-source
~ If we wanted words in the log to be able to call statically-linked
~ words, we could set this to something nonzero. We don't, so we leave it
~ alone.
0 L!' final-word-name
current-offset L!' total-size
0 L!' :
0 L!' ;
0 L!' ;asm
~ : blank-line
~ : This is the end of the hex dump. Thanks for reading!
;
' all-contents entry-to-execution-token label-loop
1 3unroll sys-write bye
|