aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: 65fbabd751906501c8d927dcdcc33c096c89ac7e (plain) (blame)
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
+ Build the consteval stuff

OPTIMIZATIONS:
+ Use hashmaps or something similar for lookups for types and calls

LOWERING:

Structure handling in lowering could probably be as follows:

Imagine
struct something {
	i27 a;
	other_struct b;
};

main ()
{
	// something s = {...};
	i27 s_def = alloc $STRUCT_SIZE;
	// i27 a = s.a;
	i27 member_a = struct_def + 0;
	i27 a << struct_def 0;

	// other_struct c = s.b;
	i27 c_def = alloc $OTHER_STRUCT_SIZE;
	i27 member_b = struct_def + 3;
	c_def blit member_b, $OTHER_STRUCT_SIZE; // has to be added to qbt,
						 // might need to be handled
						 // like store with constant as
						 // 'return'. Or can c_def be
						 // considered an output value
						 // for blit?

	/* calls just dump all registers down I guess, as do returns. No
	 * implicit conversion to pointer and passed as first argument, ufcs
	 * does that for us. */
}