Commit Graph

7234 Commits

Author SHA1 Message Date
Bill Currie d80a3413e5 Fix a segfault when freeing locations.
When chasing linked lists with a double pointer, must check the first
dereference and not the pointer itself.
2011-01-29 09:54:47 +09:00
Bill Currie e1226bd3f1 Quaternions aren't vectors :P 2011-01-28 21:57:04 +09:00
Bill Currie 2cce903cc9 Set the default storage class for local vars. 2011-01-28 21:56:17 +09:00
Bill Currie bc7d42d176 Immediate constants now work, though still not shared. 2011-01-28 21:39:01 +09:00
Bill Currie 3c95667b79 Print data contents for most simple types. 2011-01-28 21:21:29 +09:00
Bill Currie 4476074021 Print more addresses as hex. 2011-01-28 18:03:26 +09:00
Bill Currie 4837e0bd18 Fix most of the FIXMEs in qfcc.c.
Functions and defs seem to be relocated correctly. Constants are very
broken, however.
2011-01-28 15:17:30 +09:00
Bill Currie 834417b8c8 Add "debug" diagnotic printing, and use it.
Debug diagnostics are silent for verbosity levels less than 1.
2011-01-28 13:28:45 +09:00
Bill Currie a37bdd9fb5 Free removed sblocks. 2011-01-28 13:23:20 +09:00
Bill Currie 80424f6ad5 Ensure functions are always properly terminated.
Control that reaches the end of a function must see a return statement.
2011-01-28 13:14:30 +09:00
Bill Currie 9159daf99d Do simple unreachable block analysis and dead block removal. 2011-01-28 11:45:04 +09:00
Bill Currie 90a2738459 Add the label to the block to which it refers. 2011-01-28 11:41:53 +09:00
Bill Currie c158b14286 Remove the labels list from the pr struct.
I'm not sure they were ever needed.
2011-01-28 11:40:25 +09:00
Bill Currie 4738c767a2 Fix branch label handling.
Conditional branches and goto now go to the correct location.
2011-01-27 21:11:32 +09:00
Bill Currie 95b17d9fd4 Rename add_statement_ref to add_statement_def_ref. 2011-01-27 21:10:37 +09:00
Bill Currie f72d6d6a27 Fix a typo in the opname for integer modulo. 2011-01-27 21:03:11 +09:00
Bill Currie bd78b8a7ee Enable more end-of-compilation code. 2011-01-27 15:44:12 +09:00
Bill Currie cdea1d07aa Produce code for progs.src mode.
Separate compilation will take fixing object files.

The generated code is broken due to various relocation fixups being
broken, and float immediates seem to be badly broken.

Debug information is broken too.
2011-01-27 15:44:11 +09:00
Bill Currie c7bbd40df6 Give special treatment to opcodes that have void operand types. 2011-01-27 15:44:11 +09:00
Bill Currie 71b5decbe8 Get assignments to .return working.
I really do not like the mechanism I currently use for handling pointer
derefences vs pointer assignments, but this will have to do for now until
I can get qfcc producing code again.
2011-01-27 15:44:11 +09:00
Bill Currie 56106892c8 The & operator produces a pointer, not void. 2011-01-27 15:44:10 +09:00
Bill Currie 1c3cc571f1 Pascal variables need defs too. 2011-01-27 15:44:10 +09:00
Bill Currie f532fbc6df Convert all integer operands to float for v6 progs.
Converting only opc is no longer enough.
2011-01-27 15:43:59 +09:00
Bill Currie 1ed1efbdfb Implement the ROTL macro correctly.
Bit rotation requires unsigned ints.
2011-01-27 15:43:50 +09:00
Bill Currie a6e65488ec Remove the "test" parameter from test_expr.
The parameter became redundant at some stage.
2011-01-27 08:31:51 +09:00
Bill Currie f7d60397fb Set the type for zer_def used by labels. 2011-01-26 22:43:59 +09:00
Bill Currie 36c99a8da1 Get function def creation working again. 2011-01-26 14:48:22 +09:00
Bill Currie 5231e8e9f8 Handle .zero, .return and .param* properly. 2011-01-26 08:01:24 +09:00
Bill Currie 4966120e3b Untwist param's knickers. 2011-01-25 20:21:41 +09:00
Bill Currie 6ce3c5a59a Get statments being emitted to the code segment.
The first function seems to work fine, but there's a problems with the
scope of params causing params to get their knickers in a twist (tangled
linked list).
2011-01-25 15:46:48 +09:00
Bill Currie fd3b594ca5 Move label relocs to the relevant statement block. 2011-01-25 15:45:31 +09:00
Bill Currie 849d013f5e Allocate space for function parameters. 2011-01-25 15:43:57 +09:00
Bill Currie f45919df09 Need alias defs after all. 2011-01-25 15:42:26 +09:00
Bill Currie a648f043de Give functions their own defspace.
The defspace is propogated through the function's sub-scopes.
2011-01-25 12:34:45 +09:00
Bill Currie 27c5139612 Give defspaces some backing memory.
I'm not sure I want all defspaces to have backing memory, but this will do
for now.
2011-01-25 12:16:13 +09:00
Bill Currie 34ffce50fa Ensure current_symtab gets set at the start of parsing.
current_symtab must be set even if the first thing encountered is a syntax
error.
2011-01-25 12:16:13 +09:00
Bill Currie 69b889756d Fix a misplaced ! 2011-01-25 12:16:13 +09:00
Bill Currie 726f293d0d Allocate space for defs and handle basic initializations.
Block initializers (arrays and structs) are still broken.
2011-01-25 12:16:13 +09:00
Bill Currie 30701980bc Get QC cfunctions and defs working. 2011-01-25 12:16:13 +09:00
Bill Currie ade2e92ea4 Fix the immediate breakage in immediate handling. 2011-01-25 09:08:11 +09:00
Bill Currie 7e914b8c53 Fix copyright headers.
Add forgotten templates and fill in the information in places I had
forgotten. I hope I got the dates right (timezone issues).
2011-01-25 09:01:37 +09:00
Bill Currie 49b7c2d527 Document make_symbol 2011-01-25 09:01:37 +09:00
Bill Currie 0624408317 Move the diagnostic functions into their own file. 2011-01-24 21:54:57 +09:00
Bill Currie d618e51dc8 Move save_string and make_string into strpool
Might not be the perfect place, but at least they're strongly related.
2011-01-24 21:32:48 +09:00
Bill Currie 483cbeba03 Fix a few FIXMEs. 2011-01-24 21:13:37 +09:00
Bill Currie afc5b2827d Simplify def handling, use far data.
Since there is now a proper symbol table, defs are now just references to
memory locations and the symbol table takes care of duplicates.

Also, start using far data for ObjQC structures.

The qfo functions have been stubbed out until I figure out what to do with
object files in the new scheme.
2011-01-24 15:41:43 +09:00
Bill Currie ce02fe8660 Fix the order of paramenters in the tree output.
Also get call nodes looking a little better.
2011-01-23 12:59:30 +09:00
Bill Currie a79b6f0a6c Partially implement casts. 2011-01-23 11:53:08 +09:00
Bill Currie bf626c9e00 Fix some simple fixmes 2011-01-23 11:13:56 +09:00
Bill Currie 20b14af024 Add "is_math" type check and use for unary +/-. 2011-01-23 11:12:58 +09:00