Skip to content

Commit a6deb8b

Browse files
committed
Update to new cythan-compiler
1 parent a7863e3 commit a6deb8b

4 files changed

Lines changed: 183 additions & 3 deletions

File tree

compiled.cct

299 Bytes
Binary file not shown.

decompiled.rct

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
19 0 0 0 0 0 1 2 3 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 33 0 59 0 39 40 41 42 0 1 0 1 47 48 49 50 1 0 1 0 55 56 57 58 0 0 0 0 39 9 40 10 41 11 42 12 69 0 71 67 9 39 10 40 11 41 12 42 81 0 196 5 34 51 87 5 999 90 0 97 5 34 51 96 6 999 99 0 106 6 34 51 105 5 999 108 0 115 6 34 51 114 6 999 117 0 165 35 120 999 124 109 1 999 0 128 0 100 35 131 999 135 100 1 999 0 139 0 91 35 142 999 146 100 1 999 0 150 0 91 35 153 999 157 91 1 999 0 161 0 82 164 0 197 35 167 999 171 118 1 999 0 175 0 129 35 178 999 182 140 1 999 0 186 0 151 34 191 165 1 999 0 195 0 176 1 1 44 43 45 44 46 45 36 35 37 36 38 37 6 38 52 51 53 52 54 53 39 9 40 10 41 11 42 12 70 39 70 40 70 41 70 42 5 1 242 1 35 240 999 0 9 39 10 40 11 41 12 42 0 0

src/compiler.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
pub fn compile(file: &str, out: &str) -> anyhow::Result<()> {
2-
let vec = cythan_compiler::Context::new().compute(&cythan_compiler::generate_tokens(
3-
&std::fs::read_to_string(file)?,
4-
));
2+
let vec = match cythan_compiler::Context::default().compute(
3+
&match cythan_compiler::generate_tokens(&std::fs::read_to_string(file)?) {
4+
Ok(e) => e,
5+
Err(e) => {
6+
println!("{}", e);
7+
panic!("");
8+
}
9+
},
10+
) {
11+
Ok(e) => e,
12+
Err(e) => {
13+
println!("{}", e);
14+
panic!("");
15+
}
16+
};
517
super::cythanenc::write_file_and_compress(out, &vec)
618
}

test.ct

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
19 # start after data
2+
0 0 0 0 # use for if ==1, ==2, ==3, ==4
3+
'#0:0
4+
'#1:1
5+
'#2:2
6+
'#3:3
7+
'#d0:0
8+
'#d1:0
9+
'#d2:0
10+
'#d3:0
11+
'#d4:0
12+
'#d5:0
13+
'#d6:0
14+
'#d7:0
15+
'#d8:0
16+
'#d9:0
17+
nullOp = (1 1)
18+
freeze = (0 0)
19+
eraseable = (999)
20+
21+
nullOp nullOp nullOp nullOp nullOp nullOp
22+
23+
jump {~+2 0 self.0}
24+
25+
ifBin { # <input jumpA jumpB>
26+
'#0 1
27+
self.0?0 ~+3
28+
self.1 1
29+
999 0
30+
~+2 0 self.2
31+
}
32+
33+
34+
add4b {
35+
36+
jump(~+26) # jump over data
37+
# ----------------------------- data (25) -------------------------
38+
'add4b_retenue:0
39+
'add4b_actA:~+4
40+
'add4b_A1:~+4
41+
'add4b_A2:~+4
42+
'add4b_A3:~+4
43+
'add4b_inputA:self.0..4?0 # (4 data)
44+
'add4b_actB:~+4
45+
'add4b_B1:~+4
46+
'add4b_B2:~+4
47+
'add4b_B3:~+4
48+
'add4b_inputB:self.4..8?0 # (4 data)
49+
'add4b_actO:~+4
50+
'add4b_O1:~+4
51+
'add4b_O2:~+4
52+
'add4b_O3:~+4
53+
'#add4b_output:0 0 0 0 # (4 data)
54+
55+
# -------------------------------- Start ----------------------
56+
57+
# copy to data
58+
'add4b_inputA '#d0
59+
'add4b_inputA+1 '#d1
60+
'add4b_inputA+2 '#d2
61+
'add4b_inputA+3 '#d3
62+
63+
# start loop
64+
'add4b_start:jump(~+2)
65+
'add4b_startP:'add4b_start
66+
67+
# restore A from test from data
68+
'#d0 'add4b_inputA
69+
'#d1 'add4b_inputA+1
70+
'#d2 'add4b_inputA+2
71+
'#d3 'add4b_inputA+3
72+
73+
74+
# --------------------------- test -------------------------------------
75+
76+
# jump over all
77+
jump(~+115)
78+
79+
# ----- result test ---- [7*4 + 3*3 = 37]
80+
81+
'add4b_r__00:'#0 'add4b_retenue 'add4b_actO ~+2 '#0 eraseable # 11
82+
jump(~+7) # 3
83+
'add4b_r__01:'#0 'add4b_retenue 'add4b_actO ~+2 '#1 eraseable # 11
84+
jump(~+7) # 3
85+
'add4b_r__10:'#1 'add4b_retenue 'add4b_actO ~+2 '#0 eraseable # 11
86+
jump(~+7) # 3
87+
'add4b_r__11:'#1 'add4b_retenue 'add4b_actO ~+2 '#1 eraseable # 11
88+
89+
# jump over ifs end ---- [12*4 + 3 = 51]
90+
jump(~+48) # 3
91+
92+
'add4b_R1_A1:'add4b_actA ~+1 eraseable ~+3 'add4b_r__11 1 eraseable 0 ~+2 0 'add4b_r__10 # 11
93+
'add4b_R1_A0:'add4b_actA ~+1 eraseable ~+3 'add4b_r__10 1 eraseable 0 ~+2 0 'add4b_r__01 # 11
94+
'add4b_R0_A1:'add4b_actA ~+1 eraseable ~+3 'add4b_r__10 1 eraseable 0 ~+2 0 'add4b_r__01 # 11
95+
'add4b_R0_A0:'add4b_actA ~+1 eraseable ~+3 'add4b_r__01 1 eraseable 0 ~+2 0 'add4b_r__00 # 11
96+
97+
# jump over ifs end ---- [12*2 + 3 = 27]
98+
jump(~+33) # 3, j'ai ajouté 9 car on ne veux pas pas commencer le if mais le finir.
99+
'add4b_R1:'add4b_actA ~+1 eraseable ~+3 'add4b_R1_A1 1 eraseable 0 ~+2 0 'add4b_R1_A0 # 11
100+
'add4b_R0:'add4b_actA ~+1 eraseable ~+3 'add4b_R0_A1 1 eraseable 0 ~+2 0 'add4b_R0_A0 # 11
101+
102+
# start test and go back up
103+
'add4b_retenue ~+3 'add4b_R1 1 eraseable 0 ~+2 0 'add4b_R0 # 9
104+
105+
nullOp
106+
107+
# ------------------------------ Next Gen ------------------------
108+
109+
# ---------- shift
110+
111+
# shift B
112+
'add4b_B1 'add4b_actB
113+
'add4b_B2 'add4b_B1
114+
'add4b_B3 'add4b_B2
115+
116+
# shift A
117+
'add4b_A1 'add4b_actA
118+
'add4b_A2 'add4b_A1
119+
'add4b_A3 'add4b_A2
120+
'#1 'add4b_A3 # for end detection
121+
122+
# shift O
123+
'add4b_O1 'add4b_actO
124+
'add4b_O2 'add4b_O1
125+
'add4b_O3 'add4b_O2
126+
127+
128+
# ---------- Finish
129+
130+
# save state
131+
'add4b_inputA '#d0
132+
'add4b_inputA+1 '#d1
133+
'add4b_inputA+2 '#d2
134+
'add4b_inputA+3 '#d3
135+
136+
# set if
137+
'add4b_startP 'add4b_inputA
138+
'add4b_startP 'add4b_inputA+1
139+
'add4b_startP 'add4b_inputA+2
140+
'add4b_startP 'add4b_inputA+3
141+
'#0 1
142+
143+
# test (jump to start if wrong)
144+
~+6 1
145+
'add4b_actA ~+1
146+
eraseable 0
147+
148+
# 'add4b_actA = 40 | 41 | 42 | 1
149+
# 40:0 / 1
150+
# 41:0 / 1
151+
# 42:0 / 1
152+
# ---------------------------- End ----------------------------
153+
154+
# restore A
155+
'#d0 'add4b_inputA
156+
'#d1 'add4b_inputA+1
157+
'#d2 'add4b_inputA+2
158+
'#d3 'add4b_inputA+3
159+
160+
# return
161+
}
162+
163+
164+
165+
add4b(0 1 0 1 1 0 1 0)
166+
freeze
167+

0 commit comments

Comments
 (0)