96 Commits

Author SHA1 Message Date
96c6ba5087 Add offset field to the RTL operand 2026-03-25 22:30:07 +01:00
6256f66c34 Generate same instructions for global and local variable assignment 2026-03-22 14:42:27 +01:00
cf23f77eac Allow program module body 2026-03-20 21:46:51 +01:00
5230d65efd Reduce the number of used temporary registers 2026-03-20 19:00:34 +01:00
5fb3c910a6 Accept pseudo registers in the move instruction 2026-03-17 17:24:27 +01:00
953447dc23 Handle TAC global and local variables 2026-03-14 21:39:53 +01:00
cb6d970fdf Rewrite elna_parser_record_type_expression without manual pointer arithmetic 2026-03-14 08:20:53 +01:00
f8ff357045 Align the stack upon function entry 2026-03-13 18:14:35 +01:00
e1971b469e Track token source position 2026-03-08 18:16:06 +01:00
aab7e42260 Move register allocation into the allocation pass 2026-03-07 22:50:13 +01:00
8678a09694 Allow peeking and reading tokens 2026-03-04 18:02:12 +01:00
9cf052dfeb Pass lexer state explicitly 2026-03-01 23:14:24 +01:00
63ecc4e71b Do not generate pseudo variables for literals and local variables 2026-02-26 21:24:19 +01:00
68a305b00b Rewrite RTL with the new singly linked list 2026-02-25 23:15:35 +01:00
c3d4449fc7 Extend ElnaErrorList to a generic ElnaList 2026-02-23 23:51:20 +01:00
b987dd741a Use operand record in TAC expression visitor 2026-02-22 00:11:41 +01:00
8142680fb7 Allow compound types on the stack 2026-02-17 19:59:15 +01:00
e9bcd234e5 Save TAC pseudo registers in the symbol table 2026-02-04 23:13:15 +01:00
8e89d33c21 Split up the rakefile 2026-02-04 18:17:47 +01:00
a00f0d57b8 Lower global static array and record access 2026-01-30 23:21:19 +01:00
08b5325f58 Generate pseudo variables where possible 2026-01-28 20:51:04 +01:00
f0f0f431ba Parse more than 7 procedure arguments 2026-01-22 16:05:34 +01:00
ec83bbcc1e Use static arrays as instruction operands 2026-01-19 12:45:52 +01:00
cfef0550ca Implement array access expressions 2026-01-14 19:48:28 +01:00
30e18517ab Fix static arrays in type expressions 2026-01-10 12:11:38 +01:00
396c329b63 Calculate record field sizes 2026-01-07 17:07:20 +01:00
e4257b08be Allow enumeration field types 2026-01-05 18:24:03 +01:00
f86d06236c Remove support for hardware registers in TAC 2026-01-04 13:04:22 +01:00
58e708f44c Implement type size trait 2026-01-01 21:52:14 +01:00
3db3a0f20e Make designator independent of hardware registers 2025-12-29 00:33:32 +01:00
b4eabfae4e Use pseudo register in binary expressions 2025-12-22 20:38:26 +01:00
3a8bf8ae88 Preserve passed procedure parameters 2025-12-17 12:00:25 +01:00
1cf71f1a5f Move procedure call register allocation to RTL 2025-12-12 18:32:01 +01:00
305032b534 Assign stack offset to local variables in a later pass 2025-12-09 18:49:11 +01:00
1c2a8e6da8 Add boolean literals and type 2025-12-02 22:28:40 +01:00
5f7d839741 Replace getters and setters with field access 2025-11-30 19:41:16 +01:00
eb691db24a Allow parsing multiple designator expressions in a row 2025-11-28 12:42:51 +01:00
f35bdd07c2 Annotate record field access expressions 2025-11-25 17:49:55 +01:00
c20d9b7240 Set expression type for enumeration values 2025-11-25 08:03:05 +01:00
c3eff02f8d Visit expressions in the type checker 2025-11-22 23:27:00 +01:00
52b9152158 Support nil literals 2025-11-20 15:43:08 +01:00
fd9e8a36b5 Add jump_if_not_zero and bnez instructions 2025-11-19 13:05:51 +01:00
76f55d0796 Rename RTL instructions to Risc-V versions 2025-11-18 20:10:34 +01:00
8da9241233 Use custom 3-address code operands 2025-11-16 09:26:13 +01:00
cc3acdfd12 Handle immediate values in RTL 2025-11-13 20:40:17 +01:00
c24373927c Add assembly generation stage 2025-11-12 20:07:24 +01:00
d144cb2101 Move stages into subdirectories 2025-11-08 11:07:39 +01:00
0b51634566 Generate record accessors automatically 2025-11-07 09:57:44 +01:00
63c211a8e9 Rename elna_generator to elna_tac 2025-11-03 16:16:48 +01:00
64dc00c71f Make TAC generation stage 2025-11-02 08:42:39 +01:00