Commit Graph

7318 Commits

Author SHA1 Message Date
Bill Currie f362e74f98 Update the header. 2011-02-24 15:24:35 +09:00
Bill Currie a106c1fb51 Add a field for loose relocation records.
Loose relocation records are those that are not bound to a def or a
function.
2011-02-24 15:21:06 +09:00
Bill Currie 8f1e2c143a Clean up some fixmes. 2011-02-24 14:08:42 +09:00
Bill Currie c10a551c84 Rename new_defspace() and defspace_new_loc(). 2011-02-24 13:07:36 +09:00
Bill Currie 88cd37a3e2 Header update for the renamed files. 2011-02-24 13:00:19 +09:00
Bill Currie 5efeb7ebf8 Rename some files that have been bugging me. 2011-02-24 12:59:18 +09:00
Bill Currie 66b255afbf First stage of the linker rewrite.
Strings, code and data spaces are "merged". Various offsets are updated.
Still to do:
 o  Merge reloc, def, function and line data.
 o  Merge type data.
 o  Update def and function type pointers.
 o  Resolve external defs and check for duplicate defs.
 o  Perform relocations.
 o  anything else I've forgotten :)
2011-02-24 12:18:35 +09:00
Bill Currie 74497f00e1 Read qfo object files :) 2011-02-23 18:10:38 +09:00
Bill Currie 33810e9c91 Write out object files in the new format. 2011-02-23 15:05:33 +09:00
Bill Currie 1f7c39b918 Chain @va_list's type.
Oops :P
2011-02-23 14:49:00 +09:00
Bill Currie a1ea492889 Remove some redundant fields from qfo objects. 2011-02-23 10:40:35 +09:00
Bill Currie c585a17db9 Give type data a null pointer.
Pointers to the void type descriptor looked just like null pointers and
that was terribly confusing. Avoid that confusion by pre-allocating a
small amount of data in order to reserve space for a null descriptor.
2011-02-23 08:08:26 +09:00
Bill Currie e68e6d0858 Create defs for entity fields in the entity space. 2011-02-22 15:43:15 +09:00
Bill Currie e1158a83f0 Begin work on rewriting obj_file.c for the new format. 2011-02-22 15:42:49 +09:00
Bill Currie 64cf07351f Encode types to string and qfo representation on creation. 2011-02-22 13:36:16 +09:00
Bill Currie a07cd17f38 Update TODO.
Remove old entries and add some new ones.
2011-02-22 12:23:00 +09:00
Bill Currie b50b392746 Fix field def allocation for function fields.
Assignment of nil to a field function is permitted, but trying to use one
as a builtin or as a normal function is treated as an error.
.void (float y) func;       OK
.void (float y) bi = #0;    error
.void (float y) ni = nil;   OK
.void (float y) co = { };   error
2011-02-22 12:07:31 +09:00
Bill Currie 7d1f2c4ef3 Fix field def allocation for non-function fields. 2011-02-22 10:43:35 +09:00
Bill Currie ecbb904d6b More docs and clearer types. 2011-02-22 09:23:04 +09:00
Bill Currie b7c6c4af5d Better variable naming in init_elements(). 2011-02-22 09:22:04 +09:00
Bill Currie 497db3ac81 Fix the return symbol extraction when appending a return statement.
The code is still icky, though :P
2011-02-22 09:20:52 +09:00
Bill Currie 4fd6bdae6f Allow nil to be assigned to field variables.
Note, this is the field variable itself, not the field in the entity.
eg:
	.integer x = nil;
2011-02-22 09:19:01 +09:00
Bill Currie 87b240f469 Use special treatment for .float ()foo; functions.
The parser wants to treat .float () foo; as a function returning a float
field, but qcc treats it as a field holding a function variable.
Fortuantely, field types are always "simple" (ie, at worst, just more
field type wrappers around the non-field type), so all that's needed to
obtain qcc grammar is to reach into the field type layers and do the
function type calculation based on the non-field type found there.
2011-02-22 08:54:01 +09:00
Bill Currie 96c6b31c66 Update qfo version and correct some comments and types. 2011-02-21 18:24:34 +09:00
Bill Currie 4c11304c8d Documentation tweaks. 2011-02-21 08:41:03 +09:00
Bill Currie bffc1dd239 Clean up objective-qc type encoding.
Structures etc now never encode the fields as well (I might revert that
at some time). Type parsing has been removed: it has proven unnecessary
and overly complicated, and the new qfo encoding should be more useful.
2011-02-18 20:51:04 +09:00
Bill Currie 41523852cd Cleaner def and string emittion for types.
Use local defines for emitting defs and strings as everything goes to the
same locations.
2011-02-18 12:44:11 +09:00
Bill Currie 7251bc91fa Enhanced type encoding.
This creates a compact representation of types as seen by qfcc. This is
intended mainly for debuggers.
2011-02-18 09:06:05 +09:00
Bill Currie 0f0ed3dae2 Allow null types in defs again.
However, only at the lowest level. This is needed for my type encoding.
2011-02-18 09:04:33 +09:00
Bill Currie ca6dd204b3 Use the right type for VM pointers.
Probably more of these hiding in the code.
2011-02-18 09:03:04 +09:00
Bill Currie bceb98e5a4 Create structures for new qfo format.
This breaks a lot of existing code, so that code has been commented out
for now.
2011-02-17 15:02:09 +09:00
Bill Currie 9c9a71f1af Allow defs to specify use of offset relocations.
Access to struct fields in near data can be done using only one operand,
but offset relocs need to be used. However, as not all defs want offset
relocs, a flag has been added to the def struct.
2011-02-15 22:55:15 +09:00
Bill Currie d04865884f Set the method's function pointer. 2011-02-15 22:27:13 +09:00
Bill Currie 3721b2edca Method lists are made of methods, not integers :P 2011-02-15 22:26:44 +09:00
Bill Currie c068138d91 More addresses in hex. 2011-02-15 22:26:09 +09:00
Bill Currie 814e36d3c8 Correct an error message and tidy some code. 2011-02-15 22:25:40 +09:00
Bill Currie 57f735c99c Avoid another segfault when debugging. 2011-02-15 15:33:18 +09:00
Bill Currie 4336fc2c73 Move method function defs into the far data space.
As they are never referenced directly by instructions, there's no need for
them to be in the near data space, taking precious def locations.
2011-02-15 15:33:18 +09:00
Bill Currie 5252d72856 Correct the type for _OBJ_SELECTOR_TABLE. 2011-02-15 15:33:12 +09:00
Bill Currie b3da6ef3d4 Allow zero size arrays to match sized arrays of the same type.
This allows externally declared arrays to not specify a size.
2011-02-15 12:08:03 +09:00
Bill Currie b2d4aee61e Reimplement selector expressions to work with far data.
They currently execute a lea instruction every method call, but the
optimizer should take care of that once its written.
2011-02-15 10:48:05 +09:00
Bill Currie 6bd63f811f Preserve any relocs when converting a def from extern to otherwise. 2011-02-15 10:47:16 +09:00
Bill Currie 62456dc1e9 Yet another test. 2011-02-15 09:48:10 +09:00
Bill Currie 4e86b28b59 Use the def type rather than expression type to select the init method.
Local defs may be initialized with non-constant expressions, which
includes function calls. Both function calls and aggregate initializers
use block expressions.
2011-02-15 09:38:44 +09:00
Bill Currie 19f6faf0ad Fix aggregate initializers.
Initializing arrays and structs seems to be working.
2011-02-15 09:30:37 +09:00
Bill Currie d162838299 Resurrect constant_expr(). 2011-02-15 09:28:27 +09:00
Bill Currie bc882ddc3c Fix the parser side of aggregate initializers. 2011-02-14 23:31:37 +09:00
Bill Currie 09af401f0c Reset current_func at the end of each function. 2011-02-14 23:10:46 +09:00
Bill Currie 3a1e467ae8 Non-bogus syntax and warning fixes for ruamoko/cl_menu.
Sadly, there are many bogus warnings and other errors. qfcc is still very
sick :(.
2011-02-14 23:10:46 +09:00
Bill Currie 9ac6929cf7 Syntax fixes for ruamoko/game.
This one actually would compile if object files were working.
2011-02-14 23:10:46 +09:00